Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我只需要找到域,而不是使用preg_match_all查找IP_Php_Regex - Fatal编程技术网

Php 我只需要找到域,而不是使用preg_match_all查找IP

Php 我只需要找到域,而不是使用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

我试图调用一个文本文件,只抓取域名,而不是最初显示的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.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:看起来你只需要。将永远找不到
$
之后的
(.*)
,因为在您的情况下,
$
是字符串的结尾。