PHP preg_match_all - 这个正则表达式有什么问题?
PHP preg_match_all - what's wrong with this regex?
假设我在文本文件中有以下内容:
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() 函数来 return 文本文件中以以下内容开头的所有序列:
a name="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,Windows 10。谢谢。
使正则表达式不贪婪:
preg_match_all('/a name="round_(.*?)colspan/s', $page_contents, $matches1);
// __^
假设我在文本文件中有以下内容:
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() 函数来 return 文本文件中以以下内容开头的所有序列:
a name="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,Windows 10。谢谢。
使正则表达式不贪婪:
preg_match_all('/a name="round_(.*?)colspan/s', $page_contents, $matches1);
// __^