匹配項(pattern):
1、 (?=…) —> 如果匹配……匹配next,但不使用任何字符串。這稱為前向斷言。
eg: >>> r = re.search('def(?=abc)','defabc')
>>> r.group()
'def'
/* 注: 這個也是條件匹配只不過條件緊挨着要匹配字符串的后面!
2、(?!..) —> 如果匹配……不匹配。這是一個否定的前向斷言。
eg: >>> r = re.search('def(?!abc)','defacc')
>>> r.group()
'def'
2、(pattern_1)?(pattern_2)?(?(pattern_name(1、2……))yes|no) —> 例如表示如果pattern_name=pattern_1 則當pattern_1在子字符串
出現時則(?(pattern_name)yes|no)去查找字符串后面出現的yes,
否則則去查找字符串后面出現的no
eg: >>> re.search('(12)? (?(1)12|)','12 12')
<_sre.SRE_Match object; span=(0, 5), match='12 12'>
3、 (?<=…) —> 如果字符串中的當前位置前面有一個匹配的for…在當前位置結束。
eg: >>> m = re.search('(?<=abc)def', 'abcdef')
>>> m.group(0)
'def'
4、(?<!..) —> 如果字符串中的當前位置前面沒有匹配for…則匹配。
eg: >>> m = re.search('(?!<abc)def','assdef')
>>> m.group()
'def'
5、 (?#…) —> 評論;括號中的內容將被忽略。
6、 正則表達式中r’‘表示(字符) eg: \n 不是轉義字符回車,從而更好地匹配,如果不用r’'則不使用轉義字符時使用//(字符)
eg: ‘\\w’ —> 匹配一個字符
eg: >>> r = re.search('(\w+\b)+','foo.')
>>> type(r)
<class 'NoneType'>
------分割符------
>>> r = re.search(r'(\w+\b)+','foo.')
>>> r.group()
'foo'
------分割符------
>>> r = re.search('(\w+\\b)+','foo.')
>>> r.group()
'foo'
/* 注: 如果/(字符)在系統中無轉義符意義,則不用\(字符)
eg: \w 和 \w 在正則表達式中匹配的效果一樣,而\b 和 \b 不同。
如下為轉義字符:
\a \b \f \n
\r \t \u \U
\v \x \
7、\number —> 匹配疊詞
eg: >>> re.search(r'(\w+)\1','thethe')
<_sre.SRE_Match object; span=(0, 6), match='thethe'>
8、\b —> 匹配空字符串,但僅在單詞的開頭或結尾。單詞被定義為Unicode字母數字或下划線字符的序列,因此單詞的結尾由空格或非字母數字、非下划線Unicode字符表示。
9、\B —> 匹配空字符串,但僅當它不在單詞的開頭或結尾時才匹配。
10、\d —> 匹配任何Unicode十進制數字(即Unicode字符類別[Nd]中的任何字符)。
11、 \D —> 匹配任何非Unicode十進制數字的字符。這是\d的反義詞。
12、 \s —> 匹配Unicode空白字符(其中包括[\t\n\r\f\v],以及許多其他字符,例如許多語言中排版規則強制要求的不間斷空格)。如果使用ASCII標志,則只匹配[\t\n\r\f\v]。
13、\S —> 匹配任何非Unicode空白字符。這是\s的反義詞。
14、 \w —> 匹配Unicode單詞字符;這包括任何語言中可以作為單詞一部分的大多數字符,以及數字和下划線。如果使用ASCII標志,則只匹配[a- za - z0 -9_]
15、\W —> 匹配任何非Unicode單詞字符。這是\w的反義詞。
如果使用ASCII標志,它就相當於[^a- za - z0 -9_]
16、\A —> 僅在字符串的開頭匹配。
17、\Z —> 僅在字符串末尾匹配。
模式(flag):
1、 re.A(只匹配ascii)
—> 使\w、\w、\b、\b、\d、\d、\s和\s只執行ascii匹配,而不執行完整的Unicode匹配。這只對Unicode模式有意義,而對字節模式則忽略不計。
2、 re.I(忽略字母大小寫)
3、 re.DEBUG
—> 顯示有關已編譯表達式的調試信息。
4、 re.S/re.DOTALL
—> 使’.'特殊字符匹配任何字符,包括換行;沒有這個flag,
'.'將匹配除換行以外的任何內容。
5、 re.L(語言環境相關)
6、 re.M/MULTILINE(多行)
—> 當指定時,模式字符’^'匹配字符串的開頭和每行的開頭(緊接每行換行之后);模式字符“$”匹配字符串的末尾和每行的末尾(緊接在每行換行之前)。
7、 re.X(詳細)
—> 可視化操作,不是太重要,具體件PythonDocs
————2020年4月12日 XXX