0

我有一个类,在这个类中我想存储一个包含正则表达式的变量。在这种情况下,可以识别 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})'

是否有可能做到这一点?有没有更好的办法?我试过单引号和双引号,但想不出办法。

4

2 回答 2

2

这里的混淆在于正则表达式和字符串之间。
你从一个字符串构建一个正则表达式,如果你打印一个正则表达式(就像你隐式做的那样;好吧,从技术上讲,你实际上并不是在打印,而是得到一个字符串表示形式),那么你会得到一个字符串。该字符串必须将反斜杠显示为已转义,但正则表达式的内部表示实际上正在执行您想要的操作。

于 2013-10-03T00:55:52.283 回答
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"
... 
>>> 
于 2013-10-03T00:45:57.330 回答