为什么这个正则表达式不适用于换行符?
preg_match("/((?:(?:(?:[0][1-9]|1[0-2]|[0-9]):[0-5][0-9])\s(?:AM|PM)))/msiU", $input, $output_array);
不符合
text 13:30
PM moretext
答案 0 :(得分:0)
你发布的正则表达式似乎是想从多行字符串中获取时间。
好的,正则表达式“\ s”匹配任何新行,但是对于你的字符串,可能有任意数量的空格。
解决方案:
将\ s替换为\ s *
/((?:(?:(?:[0][1-9]|1[0-2]|[0-9]):[0-5][0-9])\s(?:AM|PM)))/msiU
/((?:(?:(?:[0][1-9]|1[0-2]|[0-9]):[0-5][0-9])\s*(?:AM|PM)))/msiU
\ s *允许您匹配任意数量的空格字符。
您可以在https://regex101.com/r/9Sz2Oi/1
调试正则表达式您在http://www.phpliveregex.com/p/joC修正的脚本(*使用preg_match_all)