在php中我正在做一项任务 -
我想要一个像
$str = "this is my friend's website http://example1.com I think it is coll some text example.com some text t.com/2000 some text rs.500 some text http://www some text"
如何在regex的帮助下获取以下内容 -
http://example1.com
example.com
t.com/2000
http://www
必须避免使用rs.500!
实际上我需要这样一个可以满足任何链接的正则表达式
请帮助我
答案 0 :(得分:2)
这个正则表达式是你正在寻找的(mandatory regex101 link):
(https?:\/\/\S+)|([a-z]+\.[a-z]+(?:\/\S+)?)
基本上将两个正则表达式https?:\/\/\S+
和[a-z]+\.[a-z]+(?:\/\S+)?
置于捕获组中(以便您可以使用全局搜索提取所有URL),然后与OR结合使用。
https?:\/\/\S+
通过匹配找到以http://
或https://
为前缀的网址:
http
,后跟s?
后跟:\/\/
,然后是\S+
如果https?:\/\/\S+
不匹配,则[a-z]+\.[a-z]+(?:\/\S+)?
会启动,并找到不前缀为http://
或https://
且其网址为顶级域名不包含匹配的数字:
[a-z]+
,后跟\.
,后跟[a-z]+
,后跟\/
,后跟\S+