正则表达式匹配单词后缀只有当它出现在更大的单词的一部分?

时间:2011-04-03 22:35:34

标签: php regex preg-replace

以下正则表达式匹配单词或单词片段上的尾随's':

/s\b/i

如果它是较大单词的一部分,是否可以仅匹配尾随s?

也就是说,例如,字符串“words”中的后缀s匹配,但如果有人单独输入字符串“s”,则不会匹配。

感谢您的建议

2 个答案:

答案 0 :(得分:3)

像这样,\ w修补任何'单词'字符后跟s后跟单词边界

/\ws\b/i

答案 1 :(得分:3)

标准答案是

/\ws\b/i

如前所述,但有一些警告。确保Perl对\ w的定义适合您的使用。 Perl认为'_'是一个单词字符,所以这将匹配'2_s'作为后缀单词。如果您只想要字母字符,则可以使用\ p {IsAlpha}。

你仍然有一个问题,上面会认为'214bs'是“字”214b,最后是's'。相反,你可能想要这样的东西:

/\b\p{IsAlpha}+s\b/

这完全取决于您的输入是什么样的。