我想在非常长的文本中找到第一个匹配的字符串。我知道我可以使用preg_grep()并获取返回数组的第一个元素。但是,如果我只需要第一场比赛(或者我知道事先只有一场比赛)那么这样做是没有效率的。有什么建议吗?
答案 0 :(得分:4)
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)
检查数组结构并测试正则表达式。
关于正则表达式的附注: