我需要以美元符號$
開頭的匹配「單詞」。
我曾嘗試以下的正則表達式:
\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)。 –