PHP和regex101.com有不同的结果

时间:2016-01-09 17:58:15

标签: php regex expression

我创建了一个正则表达式。

  

([a-zA-Z<] [/ a-zA-Z0-9>。?!,; _<'\ n - ] )[| \ n] [0-9] [| \ n]

我想在字幕文件中使用它。 e.g:

  

65 00:04:33,417 - > 00:04:35,658但是我放弃了以前的工作,所以我可以   和你在一起。

     

66 00:04:35,937 - > 00:04:36,984你想念它吗?

     

67 00:04:41,217 - > 00:04:42,423不,我喜欢我的新工作。

当我在regex101或regexr.com上使用此正则表达式时,它可以正常工作。 但是当我在我的PHP代码中使用时,它们会有不同的结果。

$myString=file_get_contents("wwz.srt");
$formula="/([a-zA-Z<][\/a-zA-Z0-9> .?!,;_<'\n-]*)[ |\n][0-9]*[ |\n]/";
preg_match_all($formula, $myString, $matches);

副标题有一部分:

  

70 00:04:49,017 - &gt; 00:04:50,348看看我找到了谁!

     

71 00:04:49,017 - &gt; 00:04:50,348 12号火车来了!

     

72 00:04:50,417 - &gt; 00:04:51,782这不是赛琳萨姆,是吗?

     

73 00:04:52,337 - &gt; 00:04:54,578你想要更多的煎饼吗?

     

74 00:04:55,177 - &gt; 00:04:56,542好。

     

75 00:04:56,697 - &gt; 00:04:58,984去吧,去吧来吧,scootch!

     

76 00:04:59,057 - &gt; 00:05:00821   - 至少...    - 把它移开。

     

77 00:05:00,897 - &gt; 00:05:02,786嘿!盘子里的盘子!

     

78 00:05:02,857 - &gt; 00:05:04018    - 以后!    - 当我们回来时这样做!

如果我在regex101中使用此示例,这将是第一个结果:

  

看看我找到了谁! 71

如果我在我的php代码中使用相同的正则表达式这个例子,这将是第一个结果:

  

这是数字12

错误在哪里?

2 个答案:

答案 0 :(得分:4)

当您从regex101.com复制精心制作的正则表达式以便在程序中使用它时,您应该使用代码生成器,因为它可以确保正确转义字符以便在字符串中使用。 除此之外,你必须确保选择正确的风格,因为你可能会得到一个正在使用regex101的正则表达式但不在你的程序中,因为它使用了不同的正则表达式引擎。

enter image description here

答案 1 :(得分:1)

另外,我认为测试php正则表达式的更有用的网站是http://www.phpliveregex.com/