我正在尝试为一个人的名字抓一个网页,并且在考虑中间名可能存在的可能性时遇到了麻烦。例如,如果我尝试在网页上匹配名称“John Smith”,并且该页面的名称包含中间名称(例如John Mark Smith或John M Smith或John M. Smith或JohnM.Smith),即使技术上在页面上一起提到名字和姓氏,搜索也会变空。
是否有正则表达式可以在匹配名称的过程中考虑单字跳?名称位于变量中:
$fullname = "John Smith";
我怎样才能做到这一点?
答案 0 :(得分:1)
我会尝试这个(或类似的东西):
用“?[a-zA-Z。] *?”替换空格
John ?[a-zA-Z\.]* ?Smith
http://www.phpliveregex.com/p/3jh
答案 1 :(得分:0)
preg_match("/(John.*?Smith|Smith.*?John)/", $input_line, $output_array);
答案 2 :(得分:0)
问题略有扩展,包括可能的逆序。
尝试:
(John ?[\w\.]* ?Smith|Smith ?[\w\.]* ?John)