PHP中的RegEx:找到第一个匹配的字符串

时间:2010-04-25 20:53:25

标签: php regex

我想在非常长的文本中找到第一个匹配的字符串。我知道我可以使用preg_grep()并获取返回数组的第一个元素。但是,如果我只需要第一场比赛(或者我知道事先只有一场比赛)那么这样做是没有效率的。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

preg_match()

  

preg_match()返回的数量   时代模式匹配。那将是   0次(不匹配)或1次   因为preg_match()会停止   在第一场比赛后搜索。   preg_match_all()恰恰相反   继续,直到它结束   学科。如果,preg_match()返回FALSE   发生错误。

答案 1 :(得分:1)

以下是您如何做到这一点的示例:

$string = 'A01B1/00asdqwe';
$pattern = '~^[A-Z][0-9][0-9][A-Z][0-9]+~';

if (preg_match($pattern, $string, $match) ) {
  echo "We have matched: $match[0]\n";
} else {
  echo "Not matched\n";
}

您可以尝试print_r($match)检查数组结构并测试正则表达式。

关于正则表达式的附注:

  • 正则表达式中的波浪号〜只是包围所需的分隔符 模式。
  • 插入符号^表示我们从一开始就匹配 字符串(可选)
  • 加号+表示我们可以有一个或 更多整数跟随。 (这样 A01B1 A01B12 A01B123 也会 匹配。