【发布时间】:2014-02-16 03:51:24
【问题描述】:
我正在尝试从网页中抓取一个人的姓名,但我无法考虑是否存在中间名的可能性。例如,如果我试图匹配网页上的名称“John Smith”并且该页面的名称包含中间名(例如 John Mark Smith 或 John M Smith 或 John M. Smith 或 JohnM.Smith),即使从技术上讲,名字和姓氏在页面上一起提到,搜索也会变成空的。
是否有一个正则表达式可以在匹配名称的过程中考虑一个单词跳跃?名称在变量中:
$fullname = "John Smith";
我怎样才能做到这一点?
【问题讨论】:
-
试试:
^John.*?Smith$见:phpliveregex.com/p/3jf -
首先,到目前为止,您尝试了什么?您是尝试在整个页面内容上使用正则表达式,还是使用 DOM 解析器在某个 DOM 元素中查找此名称?
-
我正在使用 curl 来取回页面上的文本。
-
好吧,无论如何,
.*?部分...如果您正在抓取页面,您可能不会想要^和$。 -
alfasin 的回答不可靠,因为该页面可能包含 John Jones 和 Sam Smith。