我想從另一個字符串與RegExp獲取子字符串。正則表達式積極lookahead
來源:\\abc\\\$
模式:/\\+(?=\$)$/
預期結果:\\\
所以我期望得到的結果字符串的結束,但是正預測先行不爲我工作想。沒有(?=)部分它的工作,但給了我$
符號=>\\\$
,但我不需要它。
這裏有什麼問題?
謝謝。
我想從另一個字符串與RegExp獲取子字符串。正則表達式積極lookahead
來源:\\abc\\\$
模式:/\\+(?=\$)$/
預期結果:\\\
所以我期望得到的結果字符串的結束,但是正預測先行不爲我工作想。沒有(?=)部分它的工作,但給了我$
符號=>\\\$
,但我不需要它。
這裏有什麼問題?
謝謝。
的問題是,未來一看是一個零寬度斷言。表達式的(?=\$)
部分不會「消耗」一個字符。因此,表達式在查找前查找字符串的結尾,但找到$
字符。
使用/\\+(?=\$$)/
代替
你可能意味着使用捕獲組,太多;你確定第二個$?
試試這個(如果字符串必須$
終止):
/(\\+)(?=\$$)/
或本(如果$可以在字符串中的任何地方發生):
/(\\+)(?=\$)/
你的正則表達式:
\\+(?=\$)$
執行以下操作:
\\+
(?=\$)
$
修正的正則表達式是:
\\+(?=\$$)
此正則表達式的作用:
\\+
(?=\$$)
的主要問題是,在正向前查找不消耗字符。
這是一個像行尾一樣的零長度斷言。
所以你必須在積極的向前看,$字符是在行的末尾。