Python 3.x 处理正则表达式

Python 3.x 处理正则表达式,python-3.x,Python 3.x,我想匹配以下格式的ip地址, 示例:.1.9.2…1.6.8…2.3.4…1.3.4。 不知道如何匹配数字之间的点 这应该是您正在寻找的: /([0-9]\.[0-9]\.[0-9])|([0-9]\.[0-9])|([0-9])/g 说明: 有三个捕获组(用括号表示):一个用于三位数,一个用于两位数,一个用于一位数。然后,使用管道字符对其进行排序。 使用反斜杠转义符匹配数字之间的点,因为正则表达式中的点字符是元字符,可以匹配除换行符以外的任何字符。 正则表达式引擎应该输出一个长度为4的数

我想匹配以下格式的ip地址, 示例:.1.9.2…1.6.8…2.3.4…1.3.4。
不知道如何匹配数字之间的点

这应该是您正在寻找的:

/([0-9]\.[0-9]\.[0-9])|([0-9]\.[0-9])|([0-9])/g



说明:

有三个捕获组(用括号表示):一个用于三位数,一个用于两位数,一个用于一位数。然后,使用管道字符对其进行排序。

使用反斜杠转义符匹配数字之间的点,因为正则表达式中的点字符是元字符,可以匹配除换行符以外的任何字符。

正则表达式引擎应该输出一个长度为4的数组,对应于IP地址的所有四个部分。中间的单点将包含在每个结果中,但三点分隔符将不会。

使用Python脚本更新

为了使用Python,我稍微修改了正则表达式。
工作于

重新导入
ip='W.i.n.3.2.u.O.p.e.r.a.t.i.n.g.)h.t.t.p.:././.1.2…1.6.8…4…1.3.5./'
ip=ip分割(“h.t.t.p.:/。/。/”[1]
结果=re.findall('([0-9]\[0-9]\[0-9]))|([0-9]\[0-9])|([0-9]),ip)
ipaddress=“”
对于范围(0,len(结果))中的x:
如果len(结果[x][0])>0:
ipaddress+=结果[x][0]。替换('.','')
如果len(结果[x][1])>0:
ipaddress+=结果[x][1]。替换('.','')
如果len(结果[x][2])>0:
ipaddress+=结果[x][2]。替换('.','')
如果(x
找到了解决方案。。所以基本问题是如何进行Base64解码。它因操作系统而异。因此,在一些机器上,它正在解码并以[1.9.2…1.6.8…2.5.4…1.2.2]的形式显示ip。对于这种输入,上述代码可以完美地工作。 但我观察到,在某些具有相同代码n python版本的机器中,输出的格式不同,因此在这种情况下,上述代码将失败。最好的解决方案是将base64字符串解码为一致的格式。
经过多次尝试后,观察到将编码ndecoding转换为“utf-16”可以提供更好的可读字符串,现在ip显示为正常:192.168.254.122,因此您可以使用基本的ip匹配正则表达式并继续前进

可能重复的井我想打印出的ip地址从一个字符串的形式:h.t.t.p.://.1.9.2…1.6.8…4.5…7.8./我只想要ip:192.168.45.78,但上面的正则表达式是不匹配的,并以所需的形式打印出来。我已经编辑了我的答案,包括一个python脚本来实现这一点哇!它工作得很好。但是,如果字符串中还有其他数字,它将失败。如果假设我保持ip='W.i.n.3.2.\uu.O.p.e.r.a.t.i.n.g.)h.t.t.p.:./././.1.2…1.6.8…4…1.3.5./'这将给出32.12.168.4.135,它可能需要从//开始我的正则表达式查找。啊,是的,这不会考虑ip之前或之后的额外数字。最简单的方法是将输入字符串按“h.t.t.p.:././”分割,然后对结果运行正则表达式。是的。。谢谢你的帮助。
import re
ip = 'W.i.n.3.2._.O.p.e.r.a.t.i.n.g.)h.t.t.p.:././.1.2...1.6.8...4...1.3.5./'

ip = ip.split("h.t.t.p.:././.")[1]
result = re.findall('([0-9]\.[0-9]\.[0-9])|([0-9]\.[0-9])|([0-9])', ip)
ipaddress = ""
for x in range(0, len(result)):
    if len(result[x][0]) > 0:
        ipaddress += result[x][0].replace('.','')
    if len(result[x][1]) > 0:
        ipaddress += result[x][1].replace('.','')
    if len(result[x][2]) > 0:
        ipaddress += result[x][2].replace('.','')
    if(x < len(result) -1):
        ipaddress+= '.'
print (ipaddress)