python 正则表达式 : How can I have pattern searching for multiple pattern strings?

标签 python regex

我必须在文件中搜索以下模式,(任何匹配都符合条件)

pattern_strings = ['\xc2d', '\xa0', '\xe7', '\xc3\ufffdd', '\xc2\xa0', '\xc3\xa7', '\xa0\xa0', '\xc2', '\xe9']
pattern = [re.compile(x) for x in pattern_strings]

并使用这个函数

def find_pattern(path):
    with open(path, 'r') as f:
        for line in f:
            found = pattern.search(line)
            if found:
                logging.info('found - ' + found)

当我尝试使用它时

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 中的所有字符串? ?

最佳答案

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

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)

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

关于 python 正则表达式 : How can I have pattern searching for multiple pattern strings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11693301/

相关文章:

python - Pytorch 期望类型为 Long 但得到类型为 int

python - 将自定义滚动函数应用于具有日期时间索引的 pandas 数据框

regex - 如何在字边界后打印字符

javascript - 仅包含数字和破折号的正则表达式

python - OpenCV-Python - 如何在使用校准函数时格式化 numpy 数组

python - 检测图像上其他物体上附着的小方 block

正则表达式:如果模式以/开头,则不匹配

javascript - Angular 中的正则表达式通配符

java - 字符串上的正则表达式replaceAll

python - ipython 在 anaconda 中使用了错误的 python 版本