繁体   English   中英

正则表达式不适用于PHP,但适用于Ruby

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM