我需要以美元符号$
开头的匹配“单词”。
我曾尝试以下的正则表达式:
\b\$banana\b
但这得出以下结果:
few words have$banana // match, but should not
few words have $banana // not match, but should
我不明白为什么会这样。
我需要找到单词,所以第一个案例不必匹配,只有第二个必须匹配。我哪里错了?
我使用Java进行测试,但正则表达式必须独立于编程语言工作。
我需要以美元符号$
开头的匹配“单词”。
我曾尝试以下的正则表达式:
\b\$banana\b
但这得出以下结果:
few words have$banana // match, but should not
few words have $banana // not match, but should
我不明白为什么会这样。
我需要找到单词,所以第一个案例不必匹配,只有第二个必须匹配。我哪里错了?
我使用Java进行测试,但正则表达式必须独立于编程语言工作。
使用 “不是一个单词边界” 一词\B
:
\B\$banana\b
因为$
是不是一个字的字符,你想匹配的地方ch之前的$
是也不是char字符;这个正则表达式不匹配foo$banana
,但会匹配foo $banana
。
见live demo显示
foo $banana bar (match)
foo$banana bar (no match)
foo $bananabar (no match)
(?:^|(?<=\s))\$banana\b
这应该为你做。参见演示。
https://regex101.com/r/nB0bI6/1
原因你不工作是怎么把第一\b
,因为没有word boundary
前$
为什么downvoted ?? – vks
你想既要匹配?你的预期结果是什么? –
我只需要找到这个'只有几个词有$ banana'的单词就不需要匹配。 – theShadow89
然后选择波希米亚的答案,或者我也可以发布['(?<!\\ w)[$] banana \\ b'](https://regex101.com/r/nB0bI6/2)。 –