我知道在正则表达式中涉及美元符号"$"的问题(这里:在PHP和JavaScript中)已被多次讨论过:是的,我知道我需要在它前面添加一个反斜杠"\"(取决于字符串处理甚至两个),但匹配美元符号的正确方法是"\ $"....去过那里,做到了,工作正常.
但这是我的新问题:美元符号"\ $"旁边标有"\ b"的字边界....我可以在regexpal.com上轻松复制以下示例.
让我们从以下文本开始搜索:
50美元
50美元
50美元
50美元
我的正则表达式应该找到"USD","Dollar"或"$".很容易:让我们试试吧
(USD |美元|\$)
成功:它找到"$","USD"和"Dollar"两种情况,包括"美元".
但是,让我们尝试通过在多项选择之后添加单词边界来跳过"美元":
(USD |美元|\$)\ b
这就是麻烦:"USD"匹配,"Dollar"匹配,"Dollars"被拒绝......但单曲,正确反击(或逃脱)"$"也被拒绝,尽管这只是一秒钟之前.
它与括号内的多项选择无关:试试吧
\ $
与
\ $\b
而且它是一样的:第一个匹配美元符号,第二个匹配美元符号.
另一个发现:
(美元|美元|\$)\ b
在")"和"\ b"之间有一个空白""实际上有效.但是,在所有情况下(如果应该存在非空白字边界),该解决方法可能不可行.
当涉及单词边界时,似乎拒绝找到逃逸的美元符号.
我很想听听你提出的解决这个谜团的建议. - 提前多多谢谢!