0

我有一个名字,“foo bar”,在任何字符串中,foo, foos,barbars应该匹配。

我认为这应该像这样工作:(foo|bar)s?. 我也尝试了其他一些正则表达式,但它们都是这样的。我怎样才能做到这一点?

4

2 回答 2

4

(foo|bar)s?是正确的...

您应该使用像\b(foo|bar)s?\b. 否则它也会匹配hihellofoos

于 2012-08-26T17:11:11.840 回答
2

您的问题似乎反映了您为什么在foosss. 请注意在字符串中查找匹配项和匹配整个字符串之间的区别。

您有几种处理方法,正确的选择取决于您的应用程序。

  • 将正则表达式锚定到整个输入行或输入:^(foo|bar)s?$
  • 将正则表达式锚定到一个单词:\b(foo|bar)s?\b
  • 一些 API(但不是preg_match)有一个单独的函数来匹配整个字符串。
于 2012-08-26T17:13:15.890 回答