带有PHP preg_match_all的条件RgEx

时间:2016-02-08 15:14:09

标签: php regex

只需选择条件正则表达式。

这是我遇到的问题......

我只想选择02:00的时间字符串,但不要选择“02:00”或“02:00”之类的引号

我用来选择02:00或2:00正则表达式

$pattern = '/(\d{2}:\d{2})|(\d{1}:\d{2})/';
preg_match_all($pattern,$content, $matches); 

但是选择这个也是“02:00”或“02:00”我不确定哪个正则表达式会用来跳过那个时间字符串。

我得到了这个http://www.regular-expressions.info/conditional.html但不确定如何制作正则表达式:(

请帮帮我。

更新

感谢Lucas Trzesniewski和他的帮助。

我刚用这个php代码解决了我的问题。

 $pattern = '/(?!["\'])\b\d{1,2}:\d{2}\b(?!["\'])/';
  preg_match_all($pattern,$content, $matches); 

1 个答案:

答案 0 :(得分:1)

在这种情况下,条件制定者对你没有多大帮助。

最简单的方法是使用lookarounds:

(?<!["'])\b\d{1,2}:\d{2}\b(?!["'])

Demo

  • (?<!["'])(负面后卫)将确保前面的字符不是单引号或双引号
  • (?!["'])(负向前瞻)将对以下字符执行相同操作