[英]Regex doesn't work with PHP, but works in Ruby
我有一个可在Ruby中使用的正则表达式,但不适用于PHP:
$filename = 'files/Dial.txt';
$input_lines=fonl($filename,80);
echo $input_lines;
$pattern = "^\[(?<DateTime>[^]]+)\]\s+(?<TypeConnection>\b.*?(?:\W+\w+)}?\W+.*?\b)\s+'(?<User>.*?)'\s+(?<Detail>.*?$)";
//$pattern = preg_quote($pattern, '/');
preg_match_all("/".$pattern."/", $input_lines, $output_array);
print_r($output_array);
并显示以下错误
警告:preg_match()[function.preg-match]:C:\\ xampp \\ htdocs \\ REGEX \\ index.php中第11行的未知修饰符']'
这个正则表达式句子有什么问题?
使用其他正则表达式定界符,并且不要忘记启用多行修饰符(?m)
以使您的正则表达式可以在多行上工作。
$filename = 'files/Dial.txt';
$input_lines=fonl($filename,80);
echo $input_lines;
$pattern = "(?m)^\[(?<DateTime>[^]]+)\]\s+(?<TypeConnection>\b.*?(?:\W+\w+)}?\W+.*?\b)\s+'(?<User>.*?)'\s+(?<Detail>.*?$)";
//$pattern = preg_quote($pattern, '/');
preg_match_all("~".$pattern."~", $input_lines, $output_array);
print_r($output_array);
检查示例,我希望它对您有帮助:
preg_match("/(?<DateTime>[^]]+)\]\s+(?<TypeConnection>\b.*?(?:\W+\w+)}?\W+.*?\b)\s+'(?<User>.*?)'\s+
(?<Detail>.*?$)", "2014-11-01 14:40:02", $results)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.