Re——正則表達式_匹配項(pattern) and 模式(flag)


匹配項(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM