6

编译正则表达式时有没有办法切换元字符的编译或使用?当前代码如下所示:


当前代码:

import re

the_value  = '192.168.1.1'
the_regex  = re.compile(the_value)

my_collection = ['192a168b1c1', '192.168.1.1']

my_collection.find_matching(the_regex)

result = ['192a168b1c1', '192.168.1.1']


理想的解决方案如下所示

import re

the_value  = '192.168.1.1'
the_regex  = re.compile(the_value, use_metacharacters=False)

my_collection = ['192a168b1c1', '192.168.1.1']

my_collection.find_matching(the_regex)

result = ['192.168.1.1']

理想的解决方案是让re库处理元字符的禁用,以避免尽可能多地参与该过程。

4

2 回答 2

7

没有。然而:

the_regex  = re.compile(re.escape(the_value))
于 2013-11-22T02:37:43.623 回答
7

为此使用该re.escape()功能。

返回所有非字母数字反斜杠的字符串;如果您想匹配其中可能包含正则表达式元字符的任意文字字符串,这很有用。

>>> import re
>>> re.escape('192.168.1.1')
'192\\.168\\.1\\.1'
于 2013-11-22T03:15:18.583 回答