python3的正則表示式(regex)
正則表示式提供了一種緊湊的表示法,可用於表示字串的組合,一個單獨的正則表示式可以表示無限數量的字串。常用的5種用途:分析、搜尋、搜尋與替代、字串的分割、驗證。
(一)正則表示式語言
python中特殊字元有 \.^$?+*{}[]()|
1、字元類速記
^ 如果在字元類中第一個字元則表示否定;
- 表示一個字元範圍,如果作為字元類中的第一個字元,就表示一個字面意義上的連字元;
. 可以匹配除換行符之外的任意字元,或帶re.DOTALL標記的任意字元,或匹配字元類內部的字面意義的字元;
\d 匹配一個Unicode數字,或帶re.ASCII標記的[0-9];
\D 匹配一個Unicode非數字,或帶re.ASCII標記的[^0-9];
\s 匹配Unicode空白,或帶re.ASCII標記的[\t\n\r\f\v];
\S 匹配Unicode非空白,或帶re.ASCII標記的[^\t\n\r\f\v];
\w 匹配一個Unicode單詞字元,或帶re.ASCII標記的[a-zA-Z0-9_];
\W 匹配一個Unicode非單詞字元,或帶re.ASCII標記的[^a-zA-Z0-9_]
2、量詞
格式{m,n},m與n分別表示使用該量詞的表達必須匹配的最少次數與最多次數。如果只給定一個數字則同時表示最小值最大值
量詞速記形式:
e{m} 準確匹配表示式e的m次出現
e{m,} 貪婪地匹配表示式e至少m次出現
e{m,}? 非貪婪地匹配表示式e至少m次出現
e{,n} 最多n次出現
e{,n}? 貪婪
e? e{0,1}
e?? e{0,1}?
e+ e{1,}
e+? e{1,}?
e* e{0,}
e*? e{0,}?
[] 匹配[]內的任意一個內容
() 將()的內容作為一個整體來進行匹配
貪婪表示會盡可以多的匹配符合條件的字元,非貪婪則為儘可以少的匹配。
3、可用air(craft|plane)來匹配 aircraft和airplane。
使用air(?:craft|plane)可以用來限制當處於更多的巢狀中時,aricraft和airplane只有一次捕獲。圓括號表示組。
4、\i反向引用,i表示前面的捕獲號。捕獲號也可以用在左圓括號前加 ?P<name>來用名稱代替
如:(?P<key>\w+)=(?P<value>.+)對於捕獲進行反向引用(?P=name): (?P<word>\w+)\s+(?P=word) 可以使用名為"word"的捕獲來匹配重複的單詞。
5、正則表示式斷言:
^ 在起始處匹配,也可以在帶MULTILINE標記的每個換行符後匹配;
$ 在結尾處匹配,也可以在帶MULTILINE標記的每個換行符前匹配;
\A 在起始處匹配;
\b 在單詞邊界匹配,受re.ASCII影響,如果在字元內部則是backspace的轉義字元;
\B 在非單詞邊界匹配,受re.ASCII影響;
\Z 在結尾處匹配;
(?=e) 如果表示式e在此斷言處匹配,但沒有超出此處——稱為前瞻或正前瞻,則匹配;
(?!e) 如果表示式e在此斷言處不匹配,但沒有超出此處——稱為負前瞻,則匹配;
(?<=e) 如果表示式e恰在本斷言之前匹配——稱為正回顧,則匹配;
(?<!e) 如果表示式e恰在本斷言之前不匹配——稱為負回顧,則匹配;
6、正則表示式的註釋
可用(?#the comment)來實現,也可用re.VERBOSE標記。
(二)正則表示式模組
正則表示式模組標記:
re.A 或 re.ASCII
re.I 或 re.IGNORECASE 忽略大小寫
re.M 或 re.MULTILINE 使^在起始處並在每個換行符後匹配,使$在結尾處但在每個換行符之前匹配
re.S 或 re.DOTALL 使.匹配每個字元,包括換行符
re.X 或 re.VERBOSE 使空白與註釋包含在匹配中
正則表示式模組的函式(供查):
re.compile(r,f) 返回編譯後的正則表示式r,如果指定,就將其標記設定為f(即上邊的re.A等,且可同時有多個標記,用|分隔);(使用re'regex'的形式表達字串可不用轉義)
re.escape(s) 返回字串s,其中所有非字母數字的字元都使用反斜線進行了轉義處理,因此,返回的字串中沒有特殊的正則表示式字元;
re.findall(r,s,f) 返回正則表示式r在字串s中所有非交疊的匹配(如果給定f,就受其制約)。如果正則表示式中有捕獲,那麼每次匹配都作為一個捕獲元組返回;
re.finditer(r,s,f) 對正則表示式r在字串s中每個非交疊的匹配(如果給定了f,就受其制約),都返回一個匹配物件;
re.match(r,s,f) 如果正則表示式r在字串s的起始處匹配(如果給定f,就受其制約),就返回一個匹配物件(MatchObject),否則返回None;
re.search(r,s,f) 如果正則表示式r在字串s的任意位置匹配(如果給定f,就受其制約),就返回一個匹配物件,否則返回None;
re.split(r,s,m) 返回分割字串s(在正則表示式r每次出現處進行分割)所產生的字串的列表,至多分割m次(如果沒有給定m,就儘可能多的分割),如果正則表示式中包含捕獲,就被包含在分割的部分之間;
re.sub(r,x,s,m) 對正則表示式r的每次匹配(如果給定m,那麼至多m次),返回字串s的一個副本,並將其替換為x--這可以是一個字串,也可以是一個函式;
re.subn(r,x,s,m) 與re.sub()函式相同,區別在於此函式返回一個二元組;
匹配物件屬性與方法:
m.end(g) 返回組g(如果給定)在文字匹配的終點索引位置,對組0,則表示整體匹配;如果匹配中不包含該組,就返回-1;
m.endpos 搜尋的終點索引位置
m.expands(s) 返回字串s,並將其中捕獲標識用相應的捕獲替代;
m.group(g,...) 返回編號的或命名的組g,如果給定的不止一個,就返回相應的捕獲組成的元組;
m.groupdict(difault) 返回一個字典,其中存放所有命名的捕獲組,組名作為鍵,捕獲作為值;如果給定了default引數,就將其用作那些不參與匹配的捕獲組的值;
m.groups(default) 返回包含所有捕獲的元組,從1開始;如果給定default,就將其用作那此不參與匹配的捕獲組的值;
m.lastgroup 匹配的、編號最高的捕獲組的名稱,如果不存在或沒有使用名稱,就返回None;
m.lastindex 匹配的、編號最高的捕獲組的編號,如果沒有就返回None;
m.pos 搜尋的起始索引位置;
m.re 產生這一匹配物件的正則表示式物件;
m.span(g) 如果給定g,就返回組g在文字中匹配的起始索引位置與結尾位置;(對組0,則是整體匹配);如果該組不參與匹配,就返回(-1,-1);
m.start(g) 如果給定g,就返回組g在文字中匹配的起始索引位置(對組0,則是整體匹配);如果該組不參加匹配,就返回-1;
m.string 傳遞給match()或search()的字串;
相關推薦
python3的正則表示式(regex)
正則表示式提供了一種緊湊的表示法,可用於表示字串的組合,一個單獨的正則表示式可以表示無限數量的字串。常用的5種用途:分析、搜尋、搜尋與替代、字串的分割、驗證。 (一)正則表示式語言python中特殊字元有 \.^$?+*{}[]()|1、字元類速記^ 如果在字元類中第一個字元則表示否定;-
正則表示式(RegEx)——快速參考
https://ahkcn.github.io/docs/misc/RegEx-QuickRef.htm#%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%88RegEx%EF%BC%89%E2%80%94%E2%80%94%E5%BF%
正則表示式(Regex)
定義:是指一個用來描述或者匹配一系列符合某個語法規則字串的字串 ,其實就是一種規則。、 字元類: []代表單個字元 [abc] a 或b或c其中的某一個字元 [^abc] 任何字元
正則表示式(re)
1、re.match(pattern, str, flag) 從str的第一個字母開始匹配,若不是開頭的,儘管屬於str內,則無法匹配。 2、貪婪匹配與非貪婪匹配(?) 貪婪匹配:嘗試匹配儘可能多的字元 >>> sentence = """You said "why?" and I
正則表示式(數量詞)
public class Demo4_Regex { /** * Greedy 數量詞 X? X,一次或一次也沒有 X* X,零次或多次 X+ X,一次或多次 X{n} X,恰好 n 次 X{n,} X,至少 n 次 X{n,m} X,至少 n 次
正則表示式(基礎)
^: 1)放某字元前面,表示以什麼開頭(如:^a,表示以a開頭的所有字串) 2)在方括號裡用'^'表示不希望出現的字元,'^'應在方括號裡的第一位。(如:%[^a-zA-Z]% ,表示兩個百分號中不應該出現字母) $:放某字元後面,表示以什麼結尾 *:放某字元後面,表示沒有或更多,還
MySQL 正則表示式(REGEXP)
正則表示式用來匹配文字的特殊的串(字元集合)(匹配文字,將一個模式(正則表示式)與一個文字串進行比較)。 LIKE 和 REGEXP之間的重要差別 LIKE 匹配整個列,如果被匹配的文字在列值中出現,LIKE 將不會找到它,相應的行也不會被返回(除非使用萬用字元)。而 REGEXP 在列
js正則表示式(2)
找到以某個字串開頭的字串 var myReg=/^(abc)/gim; 如果不加m,那麼只找一行,而加了m可以找到每行中以該字串開頭的匹配文字。 如: abcsfsdfasd7890hklfahskfkaluiop7890-7890782ksdlafkasdnfklsdnf;lsabc
詳解JavaScript正則表示式(三)
本文是JavaScript正則表示式的第三篇文章,若是對正則表示式陌生的話,可以看我之前的兩篇文章。 詳解正則表示式(一) 詳解正則表示式(二) 貪婪模式和非貪婪模式 1、貪婪模式 在匹配成功的情況下,儘可能多的匹配。而JavaScript預設的就是貪婪模式。話不多說,直
詳解JavaScript正則表示式(一)
RegExp 物件表示正則表示式,它是對字串執行模式匹配的強大工具 這篇文章主要是對正則表示式有一個全面的瞭解,學完之後,當再次看到一些比較複雜的正則表示式的時候就可以逐步分析了。當然,再加上一段時間的練習,相信你自己也可以學會怎麼使用正則表示式的。 1、例項化正則表示式的兩種方
jsp頁面驗證手機號的正則表示式(最新)
jsp頁面校驗手機號(js): function checkMobile(){ var checkRole =/^0?(13[0-9]|15[012356789]|18[012346789]|1
Python :正則表示式(1)
#正則表示式 需要呼叫的模組 : import re #函式引數: patter :需要匹配的正則表示式 string:需要匹配的字串 flags :標誌位,用於控制正則的匹配方式 { re.I :忽略大小寫 var = re.match("www","Www.baidu.com.",
常用正則表示式(copy)
一、校驗數字的表示式 數字:^[0-9]*$ n位的數字:^\d{n}$ 至少n位的數字:^\d{n,}$ m-n位的數字:^\d{m,n}$ 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(\.[0
正則表示式(JavaScript)
1、g的作用 let reg1 = /3/; let reg2 = /3/g; let x = '353';
Python爬蟲之正則表示式(1)
廖雪峰正則表示式學習筆記 1:用\d可以匹配一個數字;用\w可以匹配一個字母或數字; '00\d' 可以匹配‘007’,但是無法匹配‘00A’; ‘\d\d\d’可以匹配‘010’; ‘\w\w\d’可以匹配‘py3’; 2:.可以匹配任意字元; 'py.'可以匹配'pyc'、
正則表示式(九)——練習
package com.wy.regular; public class RegularTest { public static void main(String[] args) { pri(
正則表示式(一)
1. 常用符號 “^” 是正則表示式匹配字串開始位置 “$” 是正則表示式匹配字串結束位置 “.” 能夠表示任意字元的萬用字元 “*” 閉包,將模式和自身連線任意多次(包括零次) 例: AB* 一個A
java-Script-----正則表示式(15)
收集整理了15個常用的javaScript正則表示式,其中包括使用者名稱、密碼強度、整數、數字、電子郵件地址(Email)、手機號碼、身份證號、URL地址、 IPv4地址、 十六進位制顏色、 日期、 QQ號碼、 微訊號、車牌號、中文正則。表單驗證處理必備。 1 使用者名稱正
詞法分析——正則表示式(RE)
正則表示式 對給定的字符集Σ=C1,C2,...,Cn\Sigma = C_1,C_2,...,C_nΣ=C1,C2,...,Cn 空串ϵ\epsilonϵ是正則表示式 對於任意c∈Σc\in\Sigmac∈Σ,ccc是正則表示式 如果M和N是正則表示式
python核心程式設計筆記——正則表示式(一)
文章目錄 特殊符號和字元 使用擇一匹配符號匹配多個正則表示式模式 匹配任意單個字元 從字串起始或結尾或單詞邊界匹配 建立字符集([]) 限定範圍與否定 使用閉包操作符實現存在性和頻數匹配(*\+\?) 表示