我是一个完全的正则表达式noob,但我有一个问题需要解决。
我有一个包含以下内容的文本文件。。。
String 1
Some variable
String 2
我看了一眼,以为我是赢家,但我得到了一个错误
preg_match( '/(String 1)(?:[^])*(String 2)/', $string, $matches );
但是我收到这个错误
preg_match():编译失败:在偏移量33 处缺少字符类的终止]
有人能帮我弄清楚吗?
感谢
我相信您认为(?:[^])*
匹配任何字符"零次或多次"。
在Javascript中,[^]
表示与任何字符匹配的有效字符类。这与PCRE的工作方式不同,它编译为一个不完整的字符类。请将点.
与s
(dotall)修饰符组合使用。
preg_match('/(String 1).*?(String 2)/s', $string, $matches);
也许可以简化它,使它变得公正;
/^(String 1|String 2)$/m
例如;
<?php
$s = <<<STR
String 1
Some variable
String 2
STR;
$output_array = array();
preg_match("/^(String 1|String 2)$/m", $s, $output_array);
echo print_r($output_array, true);
实时预览
^
-匹配行/字符串的开头(..)
-我们的捕获组$
-匹配行/字符串的末尾