這裏是集團的模式蟒蛇正則表達式:不給它匹配
pattern_strings = ['\\xc2d', '\\xa0', '\\xe7', '\\xc3\\ufffdd', '\\xc2\\xa0', '\\xc3\\xa7', '\\xa0\\xa0', '\\xc2', '\\xe9']
join_pattern = '[' + '|'.join(pattern_strings) + ']'
pattern = re.compile(join_pattern)
下面是函數
def find_pattern(path):
with open(path, 'r') as f:
for line in f:
# print line
found = pattern.search(line)
if found:
print dir(found)
logging.info('found in line - ' + line)
logging.info('found - ' + str(found.group(0)))
這裏是輸入
\xc2d
d\xa0
\xe7
\xc3\ufffdd
\xc3\ufffdd
\xc2\xa0
\xc3\xa7
\xa0\xa0
'619d813\xa03697'
當我運行此,我得到的輸出爲
INFO:root:found in line - \xc2d
INFO:root:found - d
INFO:root:found in line - d\xa0
INFO:root:found - d
INFO:root:found in line - \xc3\ufffdd
INFO:root:found - u
INFO:root:found in line - \xc3\ufffdd
INFO:root:found - u
INFO:root:found in line - '619d813\xa03697'
INFO:root:found - d
問題 - 爲什麼它不告訴整個模式像\xc2d
?我在這裏做的不正確嗎? - 什麼是我需要爲了做的就是類似模式的\xc2d
代替d
UPDATE
換款到join_pattern = '(' + '|'.join(pattern_strings) + ')'
匹配不匹配任何
更新1
pattern_strings = ['\\xc2d', '\\xa0', '\\xe7', '\\xc3\\ufffdd', '\\xc2\\xa0', '\\xc3\\xa7', '\\xa0\\xa0', '\\xc2', '\\xe9']
join_pattern = '|'.join(pattern_strings)
pattern = re.compile(join_pattern)
這不匹配輸入任何東西:(
我猜你試圖匹配'pattern_strings'中的字符串之一?不要將正則表達式封裝在方括號中。這表示一套。 – 2012-07-27 19:38:24
爲什麼人們經常發表回答作爲評論? – 2012-07-27 19:39:39
你的問題是你模式中的['和']' - 刪除它們! – 2012-07-27 19:39:46