相关疑难解决方法(0)

使用regexp验证IPv4地址

我一直试图获得有效的IPv4验证正则表达式,但没有太多运气.似乎我曾经有过它(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4},但它会产生一些奇怪的结果:

$ grep --version
grep (GNU grep) 2.7
$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.1
192.168.1.1
$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.255
192.168.1.255
$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.255.255
$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.2555
192.168.1.2555
Run Code Online (Sandbox Code Playgroud)

我做了一个搜索,看看是否已经被问及回答,但其他答案似乎只是显示如何确定4组1-3个数字,或者不适合我.

有任何想法吗?谢谢!

regex validation grep ip-address ipv4

61
推荐指数
11
解决办法
16万
查看次数

从html字符串中提取IP地址(python)

我的朋友,

我真的想用Python从字符串中提取一个简单的IP地址(实际上是一行的html).但事实证明,2小时过去了,我仍然无法找到一个好的解决方案.

>>> s = "<html><head><title>Current IP Check</title></head><body>Current IP Address: 165.91.15.131</body></html>"
Run Code Online (Sandbox Code Playgroud)

- '165.91.15.131'是我想要的!

我尝试使用正则表达式,但到目前为止我只能使用第一个数字.

>>> import re
>>> ip = re.findall( r'([0-9]+)(?:\.[0-9]+){3}', s )
>>> ip
['165']
Run Code Online (Sandbox Code Playgroud)

事实上,我并不觉得我对reg-expression有一个牢固的把握,上面的代码是从网上的其他地方找到并修改过来的.

寻求您的意见和建议!

python regex string

25
推荐指数
2
解决办法
6万
查看次数

Python - 从字符串解析IPv4地址(即使在审查时)

目标:编写Python 2.7代码以从字符串中提取IPv4地址.

字符串内容示例:


以下是IP地址:192.168.1.1,8.8.8.8,101.099.098.000.这些也可以显示为192.168.1 [.] 1或192.168.1(.)1或192.168.1 [dot] 1或192.168.1(dot)1或192 .168 .1 .1或192. 168. 1这些审查方法适用于任何一个点(例如:192 [.] 168 [.] 1 [.] 1).


正如你可以从上面看到的,我在努力寻找一种方法,通过可能包含在"审查"的多种形式描绘的IP地址一个txt文件解析(防止超链接).

我认为正则表达式是要走的路.也许会说些什么; 四个整数0-255或000-255的任何分组被任何东西在"分隔符列表",其将包括周期,支架,括号,或任何其他上述实施例的分离.这样,可以根据需要更新"分隔符列表".

不确定这是否是正确的方式,甚至可能,所以,非常感谢任何帮助.


更新: 感谢下面的递归回答,我现在有以下代码适用于上面的示例.它会...

  • 找到IP
  • 将它们放入列表中
  • 清理他们的空间/大括号/等
  • 并使用已清理的列表条目替换未清除的列表条目.

警告:下面的代码不考虑不正确/不有效的IP如192.168.0.256或192.168.1.2.3目前,它将丢弃后从上述6和3.如果它的第一个字节是无效的(例如:256.10.10.10),它会掉落领先2(导致56.10.10.10).

import re

def extractIPs(fileContent):
    pattern = r"((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)([ (\[]?(\.|dot)[ )\]]?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3})"
    ips = [each[0] for each in re.findall(pattern, fileContent)]   
    for item in ips:
        location = ips.index(item)
        ip = re.sub("[ ()\[\]]", "", item)
        ip = re.sub("dot", ".", ip)
        ips.remove(item)
        ips.insert(location, ip) 
    return ips

myFile = open('***INSERT FILE PATH HERE***')
fileContent = …
Run Code Online (Sandbox Code Playgroud)

python regex ipv4 data-extraction python-2.7

5
推荐指数
2
解决办法
1万
查看次数

使用python从文本文件解析IP地址/网络

我有以下文本文件,我需要一些解析IP地址的帮助.

文本文件是表单

abc 10.1.1.1/32   aabbcc
def 11.2.0.0/16   eeffgg
efg 0.0.0.0/0   ddeeff
Run Code Online (Sandbox Code Playgroud)

换句话说,一堆IP网络作为日志文件的一部分存在.输出应如下所示:

10.1.1.1/32
11.2.0.0/16
0.0.0.0/0
Run Code Online (Sandbox Code Playgroud)

我有以下代码但不输出所需信息

file = open(filename, 'r')
for eachline in file.readlines():
    ip_regex = re.findall(r'(?:\d{1,3}\.){3}\d{1,3}', eachline)
    print ip_regex
Run Code Online (Sandbox Code Playgroud)

python regex ip

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

regex ×4

python ×3

ipv4 ×2

data-extraction ×1

grep ×1

ip ×1

ip-address ×1

python-2.7 ×1

string ×1

validation ×1