python語言的自學之路3
正則匹配裏面方法分為兩種使用方法:
方法1:
import re
str = ‘i am a bad hero‘
re.search(‘am’,str)
re.match(‘am’,str)
re.findall(‘am’,str)
re.finditer(‘am’,str)
方法2:
import re
str = ‘i am a bad hero’
pat = re.compile(r‘am’) #r的意思是原生字符串
pat.match(str)
方法區別在於,當多次使用相同的匹配規則時,方法2由於compile已經緩存了匹配規則,所以執行多次的效率高於方法1.
原生字符串
假如你需要匹配文本中的字符"\",那麽使用編程語言表示的正則表達式裏將需要4個反斜杠"
Python裏的原生字符串很好地解決了這個問題,這個例子中的正則表達式可以使用r"\\”表示,匹配一個數字的"\\d"可以寫成r"\d"。
re.compile(strPattern[, flag]):
這個方法是Pattern類的工廠方法,用於將字符串形式的正則表達式編譯為Pattern對象。
第二個參數flag是匹配模式,取值可以使用按位或運算符‘|‘表示同時生效,比如re.I | re.M。
另外,你也可以在regex字符串中指定模式,
比如re.compile(‘pattern‘, re.I | re.M)與re.compile(‘(?im)pattern‘)是等價的。
可選值有:
re.I(全拼:IGNORECASE): 忽略大小寫(括號內是完整寫法,下同)
re.M(全拼:MULTILINE): 多行模式,改變‘^‘和‘$‘的行為(參見上圖)
re.S(全拼:DOTALL): 點任意匹配模式,改變‘.‘的行為
re.L(全拼:LOCALE): 使預定字符類 \w \W \b \B \s \S 取決於當前區域設定
re.U(全拼:UNICODE): 使預定字符類 \w \W \b \B \s \S \d \D 取決於unicode定義的字符屬性
re.X(全拼:VERBOSE): 詳細模式。這個模式下正則表達式可以是多行,忽略空白字符,並可以加入註釋
以下兩個正則表達式a和b是等價的:
a = re.compile(r"""\d + # the integral part
\. # the decimal point
\d * # some fractional digits""", re.X)
b = re.compile(r"\d+\.\d*")
本文出自 “一杯開心茶” 博客,請務必保留此出處http://ggwhsd.blog.51cto.com/13135051/1955729
python語言的自學之路3