如何在第一个

时间:2018-03-23 16:51:39

标签: php regex

我在php中有以下正则表达式。

第一组或带括号的子模式是从字符串的开头选择一个可选日期。

最后一组应该从字符串末尾获得另一个可选日期。并且中间的(.+)应该得到字符串中剩余的内容。除非字符串的开头或结尾有日期,否则中间部分不起作用。

即使字符串的开头或结尾没有日期,我怎样才能使它工作?第三组需要先匹配,让第二组匹配剩下的任何东西。感谢。

这是我到目前为止所拥有的,preg_match("/(^\d{1,2}[\/.]\d{1,2}[\/.]\d{1,4}\b)?(.+)(\b\d{1,2}[\/.]\d{1,2}[\/.]\d{1,4}$)/", $string, $match);

例如,我希望(.+)My text here 551/5/18 My text here 55 5.6.2016以及1/5/18 My text here 55中获取My text here 55

1 个答案:

答案 0 :(得分:1)

如果我理解正确

^(\d{1,2}[\/.]\d{1,2}[\/.]\d{1,4}\b)?(.+?)(\b\d{1,2}[\/.]\d{1,2}[\/.]\d{1,4})?$

应该适合你。

匹配任何可以包围日期的文本

  

11/11/11 text 12/12/12

     

11/11/11 text

     

text 12/12/12

https://regex101.com/r/frkGiH/1/tests