我有file.txt
,它包含以下数据:
livebox.home (192.168.1.1)
set-top-box41.home (192.168.1.10)
pc38.home (192.168.1.11)
pc43.home (192.168.1.12)
pc39.home (192.168.1.15)
字符串
我想提取pc39.home
的IP。我使用了这个正则表达式,但它不工作:
preg_grep("#^[a-z]{2}39.[a-z]{4} \d{3}\.\d{3}\.\d{1}\.\d{2}#",$myfile);
型
结果应该是192.168.1.15
。
4条答案
按热度按时间63lcw9qa1#
您可以使用
字符串
参见regex demo
我添加了一个
\(
来匹配文字(
,并在[\d.]+
(*1个或多个数字或点 *)周围使用了一个捕获组,该捕获组匹配可以使用$matches
中的[1]
索引检索的IP。~m
启用了多行模式,以便^
可以匹配行的开头,而不仅仅是字符串的开头。更新
如果你需要创建一个包含文字字符串的动态正则表达式,你应该考虑使用
preg_quote
:型
在
' \(([\d.]+)\)/'
中还需要一个单引号,因为\
必须是文字\
符号(是的,PHP使用不存在的转义序列将\
解析为文字\
,但为什么要将其放入PHP?)。mrzz3bfm2#
解决办法是:
字符串
carvr3hs3#
有了这个你可以只改变$搜索,如果你想捕捉任何其他的IP。
字符串
pcww981p4#
字符串