正規表示式如何匹配出最短字串,正規表示式如何匹配除某些字串以外的所有字元

時間 2021-06-11 15:12:49

1樓:

當正規表示式中包含能接受重複的限定符時,通常的行為是(在使整個表示式能得到匹配的前提下)匹配儘可能多的字元。考慮這個表示式:a.

*b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。

有時,我們更需要懶惰匹配,也就是匹配儘可能少的字元。前面給出的限定符都可以被轉化為懶惰匹配模式,只要在它後面加上一個問號?。這樣.

*?就意味著匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。現在看看懶惰版的例子吧:

a.*?b匹配最短的,以a開始,以b結束的字串。如果把它應用於aabab的話,它會匹配aab(第一到第三個字元)和ab(第四到第五個字元)。

為什麼第一個匹配是aab(第一到第三個字元)而不是ab(第二到第三個字元)?簡單地說,因為正規表示式有另一條規則,比懶惰/貪婪規則的優先順序更高:最先開始的匹配擁有最高的優先權——the match that begins earliest wins。

2樓:

1、匹配(*********x)

\([^()]*\)

2、匹配(*********x)*********)就可以用你寫的

\(.*\)

正規表示式如何匹配除某些字串以外的所有字元

3樓:

你對正規表示式的理解可能存在誤區,用[ ]括起來的是匹配任意字元,根據你的要求,應該是想要匹配所有以abc開始,以.zip結束的字元,寫法應該是這樣(abc).+(\.

zip)。

在方括號[ ]中,除了^,-,一切特殊符號全部失效,你的[^abc.*?.zip]這個正規表示式,實際意思是,匹配除了a,b,c,.,*,?,z,i,p之外的一切字元

正規表示式如何匹配除了以某幾個字元開頭的字串?

4樓:ccc橙子陳

^表示bai文字開始;du $表示文字結束;

^a.*b$ 匹配a開頭,

zhib結束的dao文字

正規表示式,又稱規則回表示式。答

在**中常簡寫為regex、regexp或re),電腦科學的一個概念。正則表通常被用來檢索、替換那些符合某個模式(規則)的文字

正規表示式是對字串(包括普通字元(例如,a 到 z 之間的字母)和特殊字元(稱為"元字元"))操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個"規則字串",這個"規則字串"用來表達對字串的一種過濾邏輯。

正規表示式是一種文字模式,模式描述在搜尋文字時要匹配的一個或多個字串。

5樓:

(?!abc|def)^.*$

除了abc、def開頭的字串