python正则表达式花括号_python正则表达式(+ {})(二)
加號(hào)-重復(fù)匹配多次
+ 表示匹配前面的子表達(dá)式一次或多次,不包括0次
比如,還是上面的例子,你要從文本中,選擇每行逗號(hào)后面的字符串內(nèi)容,包括逗號(hào)本身
但是,添加一個(gè)條件,如果逗號(hào)后面沒有內(nèi)容,就不要選擇了。
比如,下面的文本中,最后一行逗號(hào)后面沒有內(nèi)容了,就不要選擇了
蘋果,是綠色的
橙子,是橙色的
香蕉,是黃色的
烏鴉,是黑色的
猴子,
就可以這樣寫正則表達(dá)式 ,.+
驗(yàn)證一下如下圖所示( + 和 * 的區(qū)別就是:不包括0次,所以沒有選中最后一行):
,.+
綠色+
.+色
最后一行,猴子逗號(hào)后面沒有其他字符了,但是?表示匹配一次或0次,所以最后一行也選中了一個(gè)逗號(hào)字符
,.?
花括號(hào)-匹配指定次數(shù)
花括號(hào)表示前面的字符匹配 指定的次數(shù)
比如,下面的文本
紅彤彤,綠油油,黑乎乎,綠油油油油
表達(dá)式 油{3,4}就表示匹配連續(xù)的油字至少3次,至多4次
實(shí)際可以應(yīng)用于獲取手機(jī)號(hào):
貪婪模式和非貪婪模式
我們要把下面的字符串中所有html標(biāo)簽都提取出來
source='
Title得到這樣的一個(gè)列表:
['','
','','']很容易想到使用正則表達(dá)式<.*>
寫出如下代碼
source='
Titleimort re
p=re.compile(r'<.*>')
print(p.findall(source))
運(yùn)行結(jié)果卻是:
['
Title']怎么回事?原來在正則表達(dá)式中,' * ',' + ', ' ? '都是貪婪的,使用他們時(shí),會(huì)盡可能多的匹配內(nèi)容
所以,<.*> 中的星號(hào)(表示任意次數(shù)的重復(fù)),一直匹配到了字符串最后的里面的e。
解決這個(gè)問題,就需要使用非貪婪模式,也就是在星號(hào)后面加上?,變成這樣<.*?>
代碼改為:
source='
Title'imort re
p=re.compile(r'<.*?>')
print(p.findall(source))
總結(jié)
以上是生活随笔為你收集整理的python正则表达式花括号_python正则表达式(+ {})(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eladmin代码自动生成_高效代码自动
- 下一篇: websocket python爬虫_p