正則表達(dá)式中常見的貪婪詞有哪些舉例詳解
1. *
- 含義:匹配前面的元素零次或者多次。
- 示例:對于正則表達(dá)式
a*
,在字符串"aaaa"
中,它會匹配整個"aaaa"
,因?yàn)樗鼤M可能多地匹配a
字符。 - 代碼示例(Python):
import re text = "aaaa" pattern = re.compile(r'a*') result = pattern.search(text) print(result.group()) # 輸出: aaaa
2. +
- 含義:匹配前面的元素一次或者多次。
- 示例:正則表達(dá)式
a+
在字符串"aaaa"
中,同樣會匹配整個"aaaa"
,不過它至少要匹配一次a
字符。 - 代碼示例(Python):
import re text = "aaaa" pattern = re.compile(r'a+') result = pattern.search(text) print(result.group()) # 輸出: aaaa
3. ?
- 含義:匹配前面的元素零次或者一次。
- 示例:正則表達(dá)式
colou?r
可以匹配"color"
和"colour"
,u?
表示u
這個字符可以出現(xiàn)零次或者一次。 - 代碼示例(Python):
import re text1 = "color" text2 = "colour" pattern = re.compile(r'colou?r') result1 = pattern.search(text1) result2 = pattern.search(text2) print(result1.group()) # 輸出: color print(result2.group()) # 輸出: colour
4. {n,}
- 含義:匹配前面的元素至少
n
次。 - 示例:正則表達(dá)式
a{2,}
在字符串"aaaa"
中,會匹配整個"aaaa"
,因?yàn)樗?nbsp;a
至少出現(xiàn) 2 次。 - 代碼示例(Python):
import re text = "aaaa" pattern = re.compile(r'a{2,}') result = pattern.search(text) print(result.group()) # 輸出: aaaa
5. {n,m}
- 含義:匹配前面的元素至少
n
次,但不超過m
次。 - 示例:正則表達(dá)式
a{2,3}
在字符串"aaaa"
中,會匹配前三個a
,即"aaa"
,因?yàn)樗M量在 2 到 3 次的范圍內(nèi)進(jìn)行最大匹配。 - 代碼示例(Python):
import re text = "aaaa" pattern = re.compile(r'a{2,3}') result = pattern.search(text) print(result.group()) # 輸出: aaa
貪婪字符會盡可能多地去匹配符合條件的字符,直到無法再匹配為止,因此會導(dǎo)致回溯問題,因此在實(shí)際應(yīng)用中,應(yīng)該避免使用貪婪字符。
如果想讓貪婪字符變?yōu)榉秦澙纺J剑恍柙谄浜蠹由?? 即可,如:*?
、+?
、??
、{n,}?
、{n,m}?,
此模式將會盡可能少的去匹配字符,但是可能無法達(dá)到預(yù)期結(jié)果,大家酌情選擇。
總結(jié)
到此這篇關(guān)于正則表達(dá)式中常見的貪婪詞有哪些舉例的文章就介紹到這了,更多相關(guān)正則表達(dá)式貪婪詞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js處理網(wǎng)頁編輯器轉(zhuǎn)義、去除轉(zhuǎn)義、去除HTML標(biāo)簽的正則
這篇文章主要介紹了富文本編輯器生成的HTML標(biāo)簽,進(jìn)行轉(zhuǎn)義,然后寫入數(shù)據(jù)庫,防止腳本注入,需要的朋友可以參考下2020-02-02js用正則表達(dá)式控制價格輸入實(shí)現(xiàn)代碼
js用正則表達(dá)式控制價格輸入實(shí)現(xiàn)代碼,主要是限制用戶的輸入。2011-11-11