我想用RegExp从另一个字符串中获取子字符串。
来源:\\abc\\\$
模式:/\\+(?=\$)$/
预期结果:\\\
所以我希望在字符串的末尾得到结果,但积极的前瞻并不像我想的那样工作。没有(?=)部分它可以工作,但给我$
符号=> \\\$
但我不需要它。
这里的问题是什么?
感谢。
答案 0 :(得分:3)
问题是向前看是零宽度断言。表达式的(?=\$)
部分不会“消耗”一个字符。因此,表达式在您向前看后会查找字符串的结尾,但会找到$
字符。
使用/\\+(?=\$$)/
代替
答案 1 :(得分:2)
答案 2 :(得分:0)
您可能也想使用捕获组;你确定第二个$?
尝试此操作(如果字符串必须$
终止):
/(\\+)(?=\$$)/
或者这个(如果$可以出现在字符串中的任何地方):
/(\\+)(?=\$)/
答案 3 :(得分:0)
你的正则表达式:
\\+(?=\$)$
执行以下操作:
\\+
(?=\$)
$
更正的正则表达式是:
\\+(?=\$$)
这个正则表达式确实:
\\+
(?=\$$)
主要的问题是,积极的前瞻不会消耗一个字符。
这是一个零长度的断言,就像行尾一样。
所以你必须在积极的前瞻中断言, $字符位于该行的末尾。