所以我试图解析从外部网页中提取的一系列数字。
preg_match('#([0-9]{3}\s[0-9]{3}\s[0-9]{3}){1}#', $element, $match);
不会返回任何结果,尽管echo元素显示正确的表达式:
341 102 408 AAA Bccc
当然,当我在网上regexp测试人员上面用以上字符串尝试上面的正则表达式时,我得到了预期的结果...... 我在想,可能有一个看不见的角色代替白色空间但找不到它。我真的很疯狂......
修改
奇怪的是,这确实删除了我想要提取的表达式的输入字符串EXCEPT的每个空格:
$element = preg_replace("/\s/", "", $element);
答案 0 :(得分:2)
尝试
preg_match('#([0-9]{3}\s+[0-9]{3}\s+[0-9]{3}){1}#u', $element, $match);
使正则表达式引擎支持Unicode,并允许数字之间有多个空白字符;也许你有一些非ASCII空格。
那就是说,你可以把它减少到
preg_match('#(?:[0-9]{3}\s+){2}[0-9]{3}#u', $element, $match);
如果成功,您将在$match[0]
中找到匹配结果。