轉(zhuǎn)自:https://zhuanlan.zhihu.com/p/26701898
re.search(pattern, string, flags=0)在一個(gè)字符串中搜索匹配正則表達(dá)式的第一個(gè)位置返回match對象? pattern : 正則表達(dá)式的字符串或原生字符串表示? string : 待匹配字符串? flags : 正則表達(dá)式使用時(shí)的控制標(biāo)記
str1='hello , world ,life is short ,use Python .WHAT? 'a=re.search(r'\w+',str1)print(a.group())? # hello
常用的第三個(gè)參數(shù) flags:re.IGNORECASE:忽略大小寫,同 re.I臂外。
re.MULTILINE:多行模式虽风,改變和$的行為棒口,同re.M。
re.DOTALL:點(diǎn)任意匹配模式辜膝,讓’.’可以匹配包括’\n’在內(nèi)的任字符无牵,同 re.S。
我們來使用一下控制標(biāo)記試試:
str1 = 'hello , world ,life is short ,use
b = re.search(r'w.+D',str1,re.I)
print(b.group())? #? world
re.findall(pattern, string, flags=0)搜索字符串厂抖,以列表類型返回全部能匹配的子串? pattern : 正則表達(dá)式的字符串或原生字符串表示? string : 待匹配字符串? flags : 正則表達(dá)式使用時(shí)的控制標(biāo)記'
c=re.findall(r'\w+',str1)
print(c)
#['hello', 'world', 'life', 'is', 'short', 'use', 'Python', 'WHAT']
re庫的另一種用法
str2='hssso'
str1 = 'hello , world ,life is short ,use
re1=re.compile(r'h.{3}o')
print(re1.findall(str1))
print(re1.findall(str2))?
# ['hello']
# ['hssso']
match對象是一次匹配的結(jié)果茎毁,他包含了很多的信息:
match 對象的屬性
.string : 待匹配的文本
.re : 匹配時(shí)使用的patter對象(正則表達(dá)式)
.pos : 正則表達(dá)式搜索文本的開始位置
.endpos : 正則表達(dá)式搜索文本的結(jié)束位置
d=re.search(r'e.+d',str1)
print(d.group())# ello ,
worldprint(d.string)# hello , world ,life is short ,use Python .WHAT?
print(d.re)# re.compile('e.+d')
print(d.pos)# 0
print(d.endpos)# 48