我正在使用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]包含一个字符串,我希望它将每个“(”或“)”字符视为该字符,而不是重新编码。
答案 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....