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