今天本文是小編將要為大家詳解正則表達式問號的用法介紹,相信很多小伙伴們都知道正則表達式問號,卻不知道如何使用它,那么我們現在就去了解了解吧。
原文符號
因為?在正則表達式中有特殊的含義,所以如果想匹配?本身,則需要轉義,/?
有無量詞
問號可以表示重復前面內容的0次或一次,也就是要么不出現,要么出現一次。
非貪婪匹配
貪婪匹配
在滿足匹配時,匹配盡可能長的字符串,默認情況下,采用貪婪匹配
string pattern1 = @"a.*c"; // greedy match Regex regex = new Regex(pattern1);regex.Match("abcabc"); // return "abcabc"
非貪婪匹配
在滿足匹配時,匹配盡可能短的字符串,使用?來表示非貪婪匹配
string pattern1 = @"a.*?c"; // non-greedy match Regex regex = new Regex(pattern1);regex.Match("abcabc"); // return "abc"
幾個常用的非貪婪匹配Pattern
*? 重復任意次,但盡可能少重復
+? 重復1次或更多次,但盡可能少重復
?? 重復0次或1次,但盡可能少重復
{n,m}? 重復n到m次,但盡可能少重復
{n,}? 重復n次以上,但盡可能少重復
不捕捉模式
如何關閉圓括號的捕獲能力?而只是用它來做分組,方法是在左括號的后邊加上:?,這里第一個圓括弧只是用來分組,而不會占用捕獲變量,所以$1的內容只能是steak或者burger,而永遠不可能是bronto。
while(<>){ if(/(?:bronto)(steak|burger)/){ print "Fred wants a $1/n" ; }}
上文就是詳解正則表達式問號的用法,我們可以通過一些實例讓大家認識正則表達式,為大家解決更大難題。
新聞熱點
疑難解答