我正在从.tsv文件中读取信息,获取表示每行中正则表达式的字符串。例如,我想检测“混音”或“重新混音”,所以我读了'\bre-?mix\b'
并且必须转换它。我搜索了一下,找到this question along the same lines,但我已经测试了答案,但没有一个对我有用。
当我在模式上使用re.escape()时,它最终会像这样:'\ bre - \?mix \ b',并在使用re.compile()并对其执行re.search()之后混音“,它失败了。我试过简单地将raw_regex.replace('\\b', '\\\\b')
输入到re.compile()中,并检查模式,它看起来像它应该的那样,但仍然没有捕获简单的if compiled_regex.search ("remix")
检查。
我在这里做错了什么?我需要做的就是读取原始文本正则表达式,转换并编译它们。如果需要在输入端更改某些内容,也可以这样做。谢谢!
答案 0 :(得分:1)
此程序读入一个字符串,将其编译为正则表达式,并针对'remix'
对其进行测试。没有"转换"需要步骤:
#!/usr/bin/python2.7
import csv
import re
with open('x.tsv') as input_file:
input_file = csv.reader(input_file, delimiter='\t')
for row in input_file:
compiled_regex = re.compile(row[0])
print row[0], bool(compiled_regex.search('remix')), bool(compiled_regex.search('re-mix'))
输入:
remix
re-?mix
\bre-?mix\b
.*
this line should not match
输出:
remix True False
re-?mix True True
\bre-?mix\b True True
.* True True
this line should not match False False