【问题标题】:Regex to match a word suffix only when it appears as part of larger word?正则表达式仅在它作为较大单词的一部分出现时才匹配单词后缀?
【发布时间】:2011-04-04 07:19:10
【问题描述】:

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

/s\b/i

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

也就是说,比如字符串“words”中的后缀s是匹配的,但是如果有人自己输入了一个字符串“s”,那就不匹配了。

感谢您的建议

【问题讨论】:

  • 看起来您正在检测复数“s”。然后,除非您正在处理整个单词大写(大写)的文本,否则相关的“s”将始终是小写字母,并且您不需要正则表达式后的“i”。

标签: php regex preg-replace


【解决方案1】:

像这样 \w 修补任何“单词”字符,后跟 s,然后是单词边界

/\ws\b/i

【讨论】:

    【解决方案2】:

    标准答案是

    /\ws\b/i
    

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

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

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

    这完全取决于您输入的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多