PHP preg_match_all-此正则表达式有什么问题?

时间:2019-04-21 12:39:10

标签: php preg-match-all

假设我的文本文件中包含以下内容:

xxa name="round_xx
Number 1
xxcolspanxx
DOG

yya name="round_yy
Number 2
xxcolspanxx
DOG

zza name="round_zz
Number 3
xxcolspanxx
DOG

我想使用PHP的 preg_match_all()函数返回文本文件中以以下开头的所有序列:

  

名称=“ round _

..之间有任何字符和换行符序列,然后以:

结尾
  

colspan

所以结果应该是这3个匹配项:

a name="round_xx
Number 1
xxcolspan
a name="round_yy
Number 2
xxcolspan
a name="round_zz
Number 3
xxcolspan

这是我的代码,失败了。它会将文本文件的内容读取到$ page_contents中,但是preg_match_all产生的完全不匹配:

$page_contents = file_get_contents('./path/to/textfile.txt');
$matches1 = array();
preg_match_all('/a name="round_(.*)colspan/s', $page_contents, $matches1);

我正在使用PHP 7.1.28,Windows10。谢谢。

1 个答案:

答案 0 :(得分:3)

使正则表达式变得非贪婪:

preg_match_all('/a name="round_(.*?)colspan/s', $page_contents, $matches1);
//                              __^