我知道涉及美元符号的问题" $"在regex中(这里:在PHP和JavaScript中)之前已经讨论了很多次:是的,我知道我需要添加一个反斜杠" \"在它前面(取决于字符串处理甚至两个),但匹配美元符号的正确方法是" \ $"。 ...去过那里,做到了,工作正常。
但这是我的新问题:美元符号" \ $"在标有" \ b"的单词边界旁边。 ...以下示例可以轻松地在例如regexpal.com。
让我们从以下文字开始搜索:
50美元
50美元
$ 50
50美元
我的正则表达式应该找到" USD"," Dollar"或" $"。很容易:试试吧
(USD |美元| \ $)
成功:它找到" $"," USD",以及" Dollar"发生,包括"美元"。
但是,让我们试着跳过"美元"通过在多项选择之后添加单词边界:
(USD |美元| \ $)\ B'/ P>
这就是麻烦:" USD"匹配,"美元"匹配,"美元"被拒绝了...但单身,正确地被反击(或逃脱)" $"也被拒绝,虽然之前只有一秒钟。
它与括号内的多项选择无关:请尝试
\ $
VS
\ $ \ B'/ P>
并且它是一样的:第一个匹配美元符号,第二个匹配美元符号。
另一个发现:
(美元|美元| \ $)\ b
空白" " ")"和" \ b"实际上有效。但是这种解决方法在所有情况下可能都不可行(如果应该有非空白字边界)。
当涉及字边界时,似乎拒绝找到逃逸的美元符号。
我很想听听你提出的解决这个谜团的建议。 - 提前多多谢谢!
答案 0 :(得分:2)
它不匹配,因为在$
中,$
之后不存在字边界。但是,如果一个单词在$
之后立即开始 - 例如
$百万
将匹配。
您可能想要做的是使\b
仅适用于您确实想要匹配单词边界的情况 - 例如
(USD\b|Dollar\b|\$)
这将坚持在" USD"之后出现字边界。在" Dollar"之后,但不是在" $"。
之后