python正則表達式解析及例題分析

來自菜鳥教程-python正則表達式下大佬的評論:

例題:
#!/usr/bin/python
import re
line = “Cats are smarter than dogs”
matchObj = re.match( r’(.) are (.?) .*’, line, re.M|re.I)
if matchObj:
print "matchObj.group() : ", matchObj.group()
print "matchObj.group(1) : ", matchObj.group(1)
print "matchObj.group(2) : ", matchObj.group(2)
else:
print “No match!!”
正則表達式:

r’(.) are (.?) .*’
解析:

首先,這是一個字符串,前面的一個 r 表示字符串爲非轉義的原始字符串,讓編譯器忽略反斜槓,也就是忽略轉義字符。但是這個字符串裏沒有反斜槓,所以這個 r 可有可無。

(.) 第一個匹配分組,. 代表匹配除換行符之外的所有字符。
(.?) 第二個匹配分組,.? 後面多個問號,代表非貪婪模式,也就是說只匹配符合條件的最少字符
後面的一個 .* 沒有括號包圍,所以不是分組,匹配效果和第一個一樣,但是不計入匹配結果中。
matchObj.group() 等同於 matchObj.group(0),表示匹配到的完整文本字符

matchObj.group(1) 得到第一組匹配結果,也就是(.*)匹配到的

matchObj.group(2) 得到第二組匹配結果,也就是(.*?)匹配到的

因爲只有匹配結果中只有兩組,所以如果填 3 時會報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章