在python字符串中转义“\”字符[需要避免hexa编码]

时间:2015-10-19 13:08:29

标签: python regex forward

需要从此字符串中选择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>'
  1. 尝试将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)

  2. error message - 
    Traceback (most recent call last):
      File "<pyshell#90>", line 1, in <module>
        mth.group(1)
    AttributeError: 'NoneType' object has no attribute 'group'
    

2 个答案:

答案 0 :(得分:4)

你应该是原始字符串形式:

str1 = r"<\11.1.1.1\cisco>"
print re.search(r'\b\d+(?:\.\d+)+\b', str1).group()
11.1.1.1

答案 1 :(得分:1)

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)