首頁  >  文章  >  後端開發  >  Python之正規表示式中的貪心模式和非貪心模式的用法和區別

Python之正規表示式中的貪心模式和非貪心模式的用法和區別

零到壹度
零到壹度原創
2018-04-02 10:54:073154瀏覽

正規表示式並不是Python獨有的,而是一套獨立的語法,很多程式語言都支援。不同語言中使用的正規表示式語法並不完全一樣,但大體都是類似的。 本文重點介紹貪心模式和非貪心模式的用法和差異。在預設情況下,正規表示式是按照貪心模式去匹配的,也就是去匹配能夠匹配到的盡可能多的內容。例如:

Python之正規表示式中的貪心模式和非貪心模式的用法和區別

在上面的程式碼中,正規表示式中第一個\b表示符合單字頭,後面還有個字母b,表示匹配以字母b開頭的單詞,後面一個圓點.表示匹配任意字符(包括空格),然後加號+表示前面的任意字符出現一次或多次,最後一個\b表示匹配單詞尾。那麼問題來了,什麼​​算是單字尾呢?空白字元和標點符號都算單字尾,但是正規表示式預設使用貪心模式,也就是符合盡可能多的內容,所以上面的程式碼會配對到的文字中最後一個單字尾。如圖:

Python之正規表示式中的貪心模式和非貪心模式的用法和區別

那如何才能只匹配以字母b開始的單字而不是像上面這樣子?可以使用非貪心模式。非貪心模式是使用問號「?」完成的,在正規表示式中,如果問號前面是普通字元或子模式,表示問號前面的字元或子模式可以出現也可以不出現。但如果問號緊接在+、*和{m,n}這樣的內容後面,則表示非貪心模式,也就是盡可能匹配更少的內容。以上面的問題為例,改為非貪心模式,例如:

Python之正規表示式中的貪心模式和非貪心模式的用法和區別

#下面的程式碼進一步示範了貪心模式和非貪心模式的區別:

Python之正規表示式中的貪心模式和非貪心模式的用法和區別

當然,回到本文最初的問題,如果只是為了匹配以字母b開始的單詞,是不用這麼麻煩,直接使用\ w就好了,因為\w只能匹配字母、數字或底線,而不能匹配空格。例如:

Python之正規表示式中的貪心模式和非貪心模式的用法和區別

相關推薦:

#正規表示式re中的貪心演算法和非貪心演算法在python中的應用

以上是Python之正規表示式中的貪心模式和非貪心模式的用法和區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn