3 回答

TA貢獻1807條經(jīng)驗 獲得超9個贊
您沒有指定您正在使用哪種正則表達式,但這適用于任何可被視為“完整”的最流行的正則表達式。
/.+?(?=abc)/
這個怎么運作
這 .+?
部分是.+
(一個或多個任何東西)的非貪婪版本 。當我們使用時.+
,引擎將基本匹配所有內(nèi)容。然后,如果正則表達式中還有其他內(nèi)容,它將返回嘗試匹配以下部分的步驟。這是 貪婪的行為,意味著盡可能地滿足。
使用時 .+?
,引擎將不是一次匹配并返回其他條件(如果有的話),引擎將逐步匹配下一個字符,直到匹配正則表達式的后續(xù)部分(如果有的話)。這是不貪婪的,意味著 盡可能少地滿足。
/.+X/ ~ "abcXabcXabcX" /.+/ ~ "abcXabcXabcX" ^^^^^^^^^^^^ ^^^^^^^^^^^^ /.+?X/ ~ "abcXabcXabcX" /.+?/ ~ "abcXabcXabcX" ^^^^ ^
接下來我們有 一個 零寬度斷言, 環(huán)顧四周。此分組構(gòu)造與其內(nèi)容匹配,但不計為匹配的字符(零寬度)。只有在匹配與否時才會返回(斷言)。(?=
{contents}
)
因此,在其他方面,正則表達式/.+?(?=abc)/
意味著:
匹配任何字符盡可能少,直到找到“abc”,而不計算“abc”。

TA貢獻1856條經(jīng)驗 獲得超11個贊
如果你想捕捉到“abc”的所有內(nèi)容:
/^(.*?)abc/
說明:
( )
使用捕獲的括號內(nèi)的訪問的表達$1
,$2
等等。
^
匹配線的開始
.*
匹配任何東西,?
非貪婪(匹配所需的最小字符數(shù)) - [1]
[1]需要這樣做的原因是,否則,在以下字符串中:
whatever whatever something abc something abc
默認情況下,正則表達式是貪婪的,這意味著它將盡可能匹配。因此/^.*abc/
會匹配“無論什么東西abc某事”。添加非貪婪量詞?
使得正則表達式只匹配“無論什么東西”。

TA貢獻1853條經(jīng)驗 獲得超18個贊
正如@Jared Ng和@Issun指出的那樣,解決這種RegEx的關(guān)鍵是“匹配某個單詞或子串的所有內(nèi)容”或“匹配某個單詞或子串后的所有內(nèi)容”稱為“環(huán)視”零長度斷言。在這里閱讀更多相關(guān)信息。
在您的特定情況下,可以通過積極展望來解決。一張圖片勝過千言萬語。請參閱屏幕截圖中的詳細說明。
- 3 回答
- 0 關(guān)注
- 1683 瀏覽
添加回答
舉報