我在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 55
和1/5/18 My text here 55 5.6.2016
以及1/5/18 My text here 55
中获取My text here 55
。
答案 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