首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python regex:如何让模式搜索多个模式字符串?

python regex:如何让模式搜索多个模式字符串?
EN

Stack Overflow用户
提问于 2012-07-28 02:07:56
回答 1查看 5.3K关注 0票数 4

我必须在一个文件中搜索以下模式,(任何匹配都可以)

代码语言:javascript
复制
pattern_strings = ['\xc2d', '\xa0', '\xe7', '\xc3\ufffdd', '\xc2\xa0', '\xc3\xa7', '\xa0\xa0', '\xc2', '\xe9']
pattern = [re.compile(x) for x in pattern_strings]

并使用此函数

代码语言:javascript
复制
def find_pattern(path):
    with open(path, 'r') as f:
        for line in f:
            found = pattern.search(line)
            if found:
                logging.info('found - ' + found)

当我尝试使用它时

代码语言:javascript
复制
find_pattern('myfile')

我看到了AttributeError: "'list' object has no attribute 'search'"

因为模式是

[<_sre.SRE_Pattern object at 0x107948378>, <_sre.SRE_Pattern object at 0x107b31c70>, <_sre.SRE_Pattern object at 0x107b31ce0>, <_sre.SRE_Pattern object at 0x107ac3cb0>, <_sre.SRE_Pattern object at 0x107b747b0>, <_sre.SRE_Pattern object at 0x107b74828>, <_sre.SRE_Pattern object at 0x107b748a0>, <_sre.SRE_Pattern object at 0x107b31d50>, <_sre.SRE_Pattern object at 0x107b31dc0>]

如何使用一种模式来查找pattern_strings中的所有字符串

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-28 02:10:32

您可以简单地使用|将所有表达式连接在一起

代码语言:javascript
复制
pattern_strings = ['\xc2d', '\xa0', '\xe7', '\xc3\ufffdd', '\xc2\xa0', '\xc3\xa7', '\xa0\xa0', '\xc2', '\xe9']
pattern_string = '|'.join(pattern_strings)
pattern = re.compile(pattern_string)

然而,这确实假设您的模式都不够复杂,以至于像这样的简单连接可能会中断。对于您的示例中的那些,它应该可以工作。对于更复杂的模式,它可能不会。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11693301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档