问题描述
需要从此字符串中选择IP地址str1 = '<\\11.1.1.1\\testdata>'
实现以下选项时1. reg = re.compile("^.*\\/+([\\d\\.]+)/\\+.*$",re.I).search mth = reg(str2) mth.group(1)
得到了错误信息
Traceback (most recent call last):
File "<pyshell#90>", line 1, in <module>
mth.group(1)
AttributeError: 'NoneType' object has no attribute 'group'
选项2。
str1 = "<\11.1.1.1\cisco>"
str1.replace("\\","\\\\")
print str1
output - '<\t.1.1.1\\\\cisco>'
尝试将str1作为原始字符串
str1 = r"<\\11.1.1.1\\cisco>" str2 = str1.replace("\\\\","/"); print str2 output - '</11.1.1.1/cisco>'
reg = re.compile("^.*\\/+([\\d\\.]+)/\\+.*$",re.I).search mth = reg(str2) mth.group(1)
“
error message -
Traceback (most recent call last):
File "<pyshell#90>", line 1, in <module>
mth.group(1)
AttributeError: 'NoneType' object has no attribute 'group'
1楼
您应该使用原始字符串形式:
str1 = r"<\11.1.1.1\cisco>"
print re.search(r'\b\d+(?:\.\d+)+\b', str1).group()
11.1.1.1
2楼
str1 = r'<\11.1.1.1\testdata>'
reg = re.compile(r"^.*?\\([\d\.]+)\\.*$",re.I)
mth = reg.search(str1)
print mth.group(1)
您需要在两个地方都使用raw
字符串。
输出: 11.1.1.1
如果您不想将raw
字符串用于正则表达式,则必须使用
reg = re.compile("^.*?\\\([\d\.]+)\\\.*$",re.I)