Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
Python 打印ip时出现正则表达式错误_Python_Regex_Subprocess_Re - Fatal编程技术网

Python 打印ip时出现正则表达式错误

Python 打印ip时出现正则表达式错误,python,regex,subprocess,re,Python,Regex,Subprocess,Re,程序搜索txt文件并使用正则表达式查找此行: |2018-11-03 18:20:59.0 | FrozoneMD | 8607446f-5748-479f-b72a-e0d25c1c7757 | 70.19.66.12| 当我打印var ip时,它会打印以下内容: [('70','12','12')] 而不是: [('70.19.66.12')]你澄清问题的评论让我相信这可能是一个可行的解决方案 import re text = "|2018-11-03 18:20:59.0|Fr

程序搜索txt文件并使用正则表达式查找此行:

|2018-11-03 18:20:59.0 | FrozoneMD | 8607446f-5748-479f-b72a-e0d25c1c7757 | 70.19.66.12|

当我打印var ip时,它会打印以下内容:

[('70','12','12')]

而不是:


[('70.19.66.12')]

你澄清问题的评论让我相信这可能是一个可行的解决方案

import re

text = "|2018-11-03 18:20:59.0|FrozoneMD|8607446f-5748-479f-b72a-e0d25c1c7757|70.19.66.12|"
ip = re.findall("(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}", text)
print(ip)

您可以使用
re.search()
并仅打印组(0),如果有任何匹配项

text = text.split('|')[-2]
编辑:

如果需要获得多个匹配项,可以使用
re.finditer()

输出:

import re

text = "|2018-11-03 18:20:59.0|FrozoneMD|8607446f-5748-479f-b72a-e0d25c1c7757|70.19.66.12|\n|2018-11-03 18:20:59.0|FrozoneMD|8607446f-5748-479f-b72a-e0d25c1c7757|70.19.66.13|"
ip = re.finditer("(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}", text)
for i in ip:
    print(i.group(0))

既然我们没有访问您的系统的权限,为什么不删除子流程的内容,只显示字符串呢?(假设子流程工作正常,则与问题无关)。谢谢。字符串的格式经常改变吗?例如,除了IP更改之外,端部是否总是这样<代码>| 70.19.66.12 |格式不会经常更改,它看起来总是这样。不幸的是,这并不能解决我的问题。你为什么这么说?我如何以列表格式打印它?(当有多个ip时)@NathanWilliamson我想你可以使用python的列表理解来实现这一点。您可以将for循环替换为:
ip\u列表=[i.group(0)for i in ip]
然后只需
打印(ip\u列表)
import re

text = "|2018-11-03 18:20:59.0|FrozoneMD|8607446f-5748-479f-b72a-e0d25c1c7757|70.19.66.12|\n|2018-11-03 18:20:59.0|FrozoneMD|8607446f-5748-479f-b72a-e0d25c1c7757|70.19.66.13|"
ip = re.finditer("(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}", text)
for i in ip:
    print(i.group(0))
70.19.66.12
70.19.66.13