python如何重新忽略原始文本中的括号

时间:2012-03-21 10:21:50

标签: python regex

我正在使用re.search来搜索很多字符串,其中一些包含不平衡的括号。我怎么告诉它忽略这些目的?我只是想把它当作一个原始字符串。但是,这些字符串在列表中,所以在re表达式中,我不能只在它前面放一个r':

for a in some_list:
    for b in some_other_list:
        if re.search(a[0],b[0], re.I):
            do stuff....

在该示例中,[0]包含一个字符串,我希望它将每个“(”或“)”字符视为该字符,而不是重新编码。

2 个答案:

答案 0 :(得分:1)

我想你想在字符串上使用re.escape

  

re.escape(string)

     

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

docs

答案 1 :(得分:1)

对于性能转义和正则表达式编译最好在内循环之外完成:

for a in some_list:
    pat = re.compile(re.escape(a[0]), re.I)
    for b in some_other_list:
        if pat.search(b[0]):
            do stuff....