Php正则表达式单词前瞻

时间:2014-01-25 00:08:35

标签: php regex

我正在尝试为一个人的名字抓一个网页,并且在考虑中间名可能存在的可能性时遇到了麻烦。例如,如果我尝试在网页上匹配名称“John Smith”,并且该页面的名称包含中间名称(例如John Mark Smith或John M Smith或John M. Smith或JohnM.Smith),即使技术上在页面上一起提到名字和姓氏,搜索也会变空。

是否有正则表达式可以在匹配名称的过程中考虑单字跳?名称位于变量中:

$fullname = "John Smith";

我怎样才能做到这一点?

3 个答案:

答案 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);

见这里:http://www.phpliveregex.com/p/3jj

答案 2 :(得分:0)

问题略有扩展,包括可能的逆序。

尝试:

(John ?[\w\.]* ?Smith|Smith ?[\w\.]* ?John)