我有一个类,在这个类中我想存储一个包含正则表达式的变量。在这种情况下,要识别IP地址:
class Foo:
'''a class to parse through an sosreport and begin the cleaning process required in many industries'''
def __init__(self, somefile):
self.version = '0.1'
self.somefile = somefile
self.network_search = {'strings':('foo','bar','foobar','barfoo',), 'regex':"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"}
不幸的是,当我从提示中调用变量时,我得到了这个:
>>> a = Foo('sosreport')
>>> a.network_search['regex']
'(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})'
有可能这样做吗?有没有更好的办法?我试过单引号和双引号,但想不出办法。
答案 0 :(得分:2)
这里的混淆是在正则表达式和字符串之间 你从一个字符串构建一个正则表达式,如果你打印一个正则表达式(因为你暗中做;从技术上讲,你实际上并没有打印,但得到一个字符串表示)然后你得到一个字符串。字符串必须将反斜杠显示为转义,但正则表达式的内部表示实际上正在执行您想要的操作。
答案 1 :(得分:0)
显然它无论如何都有用......
>>> a = Foo('somefile')
>>> a.network_search['regex']
'(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})'
>>> import re
>>> string1 = 'ip addy is 192.168.1.153 so there'
>>> x=a.network_search['regex']
>>> m = re.search(x,string1)
>>> if m:
... print your IP matches
...
your IP matches
>>> string2 = 'no ip addy so there'
>>> n = re.search(x,string2)
>>> if n:
... print "your IP matches"
...
>>>