python正则表达式:找不到模式



我有一个编译为的模式

pattern_strings = ['xc2d', 'xa0', 'xe7', 'xc3ufffdd', 'xc2xa0', 'xc3xa7', 'xa0xa0', '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 - ' + found)

并且我作为path文件的输入是

xc2d 
dxa0 
xe7 
xc3ufffdd 
xc3ufffdd 
xc2xa0 
xc3xa7 
xa0xa0 
'619d813xa03697' 

当我运行这个程序时,什么都不会发生。

我没能抓住这些模式,我在这里做错了什么?

所需输出-每条线,因为每条线都有一个或另一个匹配图案

更新

将正则表达式更改为后

pattern_strings = ['\xc2d', '\xa0', '\xe7', '\xc3\ufffdd', '\xc2\xa0', '\xc3\xa7', '\xa0\xa0', '\xc2', '\xe9']

它仍然是一样的,没有输出

更新

在将正则表达式转换为之后

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)

事情开始奏效了,但部分情况下,仍未捕捉到的模式是针对线的

xc2xa0 
xc3xa7 
xa0xa0 

我的模式字符串是['\xc2\xa0', '\xc3\xa7', '\xa0\xa0']

在搜索模式中转义\使用r"xa0"或作为"\xa0"

这样做。。。。

 ['\xc2d', '\xa0', '\xe7', '\xc3\ufffdd', '\xc2\xa0', '\xc3\xa7', '\xa0\xa0', '\xc2', '\xe9']

就像每个人都说要做的一样,除了你也听过的那个人。。。

您的文件实际上包含xc2d-也就是说,五个字符:一个反斜杠,后面跟着c,然后是2,然后是d?如果是这样,您的正则表达式将与之不匹配。每个正则表达式将匹配一到两个具有特定字符代码的字符。如果要匹配字符串xc2d,则正则表达式需要为\xc2d

最新更新