Php 我只需要找到域,而不是使用preg_match_all查找IP
我试图调用一个文本文件,只抓取域名,而不是最初显示的IPPhp 我只需要找到域,而不是使用preg_match_all查找IP,php,regex,Php,Regex,我试图调用一个文本文件,只抓取域名,而不是最初显示的IP 103.246.245.253 my.test.com 103.6.86.209 www.test.com 104.131.236.104 test.test.com 107.170.182.78 ride.metrorock.test.com 107.182.176.204 mail.test.com 我只需要以下域: my.test.com www.test.com test.test.com ride.metrorock.test
103.246.245.253 my.test.com
103.6.86.209 www.test.com
104.131.236.104 test.test.com
107.170.182.78 ride.metrorock.test.com
107.182.176.204 mail.test.com
我只需要以下域:
my.test.com
www.test.com
test.test.com
ride.metrorock.test.com
mail.test.com
谁能帮我用正确的正则表达式找到“随机ip”“添加空间”,然后使用(.*)
获取域
例如:
preg_match_all('|(ip)(space)(.*?)|',$source,$sites);
如果您确定您的文件采用上述格式,您可以使用:
\S+$
表示一行末尾有多个非空格字符
但是,如果您希望像您描述的那样精确:
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} (.+)$
现在,第一个组将包含您的域。为什么要使用JavaScript标记?这肯定是PHP吗?为什么不对每行使用
explode(“”,$line)[1]
?或preg_match_all(“|\S+$|,$source,$sites)
@AvinashRaj您需要'|\S+$|m'
才能获取所有域。@cmbuckley:上面的行很可能被视为单独的输入字符串,因此不需要多行标志。@Stribizev如果它们是单独的字符串,那么您就不会使用preg|u match_all
。您好,谢谢我尝试了,但没有成功@pancho,我在一个d
前面漏掉了一条斜线。很抱歉,现在应该可以了。@pancho请记住,您还需要使用/m
修饰符来匹配多行。|\S+$(.*)|有效,但只能找到行的结尾。我可以将“|\S+$| m”与(.*)一起使用吗@pancho:看起来你只需要。将永远找不到$
之后的(.*)
,因为在您的情况下,$
是字符串的结尾。