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