编译将自动转义或忽略特殊字符的正则表达式

时间:2015-09-16 01:06:16

标签: python regex

我正在使用一个正则表达式的结果来构建另一个正则表达式,或多或少像这样:

var arr1 = [20, 35, 50], arr2 = [5, -5, 10], finalArr = [];
for (var i = 0; i < arr1.length; i++) {
    finalArr.push(arr1[i] + arr2[i]);
}

这种方法运行正常,但有时会抛出此错误:

regex = '(?P<prev>.+?)(?P<hook>\%\%.+?\%\%)(?P<next>.+?$)'
match = re.search(regex, content, re.S)

comparisonRegex = match.group('prev') + 
    '(?P<desiredContent>desireable)' + match.group('next')
match = re.search(comparisonRegex, otherContent, re.S)

我相当有信心这是因为我正在搜索和使用的内容作为新的正则表达式中包含无效的字符或序列,但我不知道如何处理它。是否有一个我可以传递的参数,它基本上会告诉它将所有字母编译为文字而不是特殊字符?到目前为止,我还没有找到python regex guide中的任何内容。

1 个答案:

答案 0 :(得分:1)

re.escape

regex = '(?P<prev>.?+)(\%\%.+?\%\%)(?P<next>.+?$)'
match = re.search(regex, content, re.S)

comparisonRegex = re.escape(match.group('prev')) + 
    '(?P<desiredContent>desireable)' + re.escape(match.group('next'))
match = re.search(comparisonRegex, otherContent, re.S)