preg_match用于部分匹配

时间:2010-09-03 05:15:04

标签: php preg-match

如何将preg_match用于部分匹配?

当我有字符串时:

www.stackoverflow.com

当我进入

stackoverflow.com or stackoverflow

匹配它返回false的短语。如何使其适用于部分匹配?

2 个答案:

答案 0 :(得分:5)

preg_match使用regular expressions,您可以获得here的非常好的教程。

在您的特定情况下,您正在寻找一个字符串,然后是一个可选的段(要将搜索更改为英语,您要查找“stackoverflow”,可选地后跟“.com”)。可以使用?修饰符

制作正则表达式的部分optional
preg_match('/stackoverflow(\.com)?/', $your_string)

这里的正则表达式(/stackoverflow(\.com)?/)与上面的英文版本说的相同 - 匹配“stackoverflow”后跟可选的“.com”。

以下是正则表达式如何运作的快速概述:

  • 模式每一端的斜杠是delimiter,PHP用它来包含正则表达式。
  • 正则表达式中的大多数字符按字面匹配,因此stackoverflow匹配“stackoverflow”
  • 括号定义group?使其成为可选项。如果没有该组,只有?之前的令牌才会成为可选(在本例中为“m”)。
  • 请注意,“。com”中的点前面有斜杠。这是因为dots是正则表达式中的特殊字符(类似于通配符),因此如果要匹配文字点,则需要对其进行转义。

答案 1 :(得分:1)

preg_match默认情况下不会锚定,因此无需任何特殊操作即可找到部分匹配。你有正确的顺序吗?首先是正则表达式,然后是要搜索的字符串。所以:

if (preg_match('/stackoverflow/', 'www.stackoverflow.com')) {
    ...
}