我知道有很多关于正则表达式和美元符号的线索。但我读过的那个根本没用。我有这个正则表达式\b(foo bar\$)s?\b
,它应与foo bar$
和foo bar$s
匹配。问题是,正则表达式只匹配foo bar$s
。
\b(foo bar)s?\b
适用于foo bar
和foo bars
美元是名称的一部分,所以我无法将其删除。
有什么想法吗?
答案 0 :(得分:6)
\b(foo bar\$)(s\b)?
\b
匹配单词边界,单词边界定义为单词字符,后跟非单词字符,反之亦然。 $
是一个非单词字符,因此$\b<space>
是一个失败的匹配,因为\b
被双方的非单词字符包围。
解决方案是仅查找第二个\b
,如果它位于s
之后。