正则表达式 - 美元符号仅匹配另一个字符

时间:2012-10-09 15:13:18

标签: php regex dollar-sign

我知道有很多关于正则表达式和美元符号的线索。但我读过的那个根本没用。我有这个正则表达式\b(foo bar\$)s?\b,它应与foo bar$foo bar$s匹配。问题是,正则表达式只匹配foo bar$s

\b(foo bar)s?\b适用于foo barfoo bars

美元是名称的一部分,所以我无法将其删除。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

\b(foo bar\$)(s\b)?

\b匹配单词边界,单词边界定义为单词字符,后跟非单词字符,反之亦然。 $是一个非单词字符,因此$\b<space>是一个失败的匹配,因为\b被双方的非单词字符包围。

解决方案是仅查找第二个\b,如果它位于s之后。