regex - 从一批正则表达式中获取第一个成功的匹配项

标签 regex python

我正在尝试从可以匹配三种模式之一的字符串中提取数据集。我有一个已编译的正则表达式列表。我想(按顺序)遍历它们并进行第一场比赛。

regexes = [
    compiled_regex_1,
    compiled_regex_2,
    compiled_regex_3,
]

m = None
for reg in regexes:
    m = reg.match(name)
    if m: break

if not m:
    print 'ARGL NOTHING MATCHES THIS!!!'

这应该可以工作(还没有测试过)但是它很糟糕。有没有更好的方法来简化一个在成功时中断或在失败时爆炸的循环?

re 可能有一些我不知道的特定内容,它允许您也测试多个模式。

最佳答案

您可以使用 else for 循环的子句:

for reg in regexes:
    m = reg.match(name)
    if m: break
else:
    print 'ARGL NOTHING MATCHES THIS!!!'

关于regex - 从一批正则表达式中获取第一个成功的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642621/

相关文章:

regex - 以正则表达式作为其结果之一的 Perl 三元语句

python - 如何获得redis命中率?

python - 如何将十六进制字符串转换为十六进制数字

python - 暂时禁用 Django 缓存

javascript - 如何在字符串中搜索第一次出现的 ":/",然后搜索找到的子字符串(包括 ":/")的所有其他出现?

regex - 消除句点前的空格,除非后跟一个数字

python - 如何将 Python bool 对象转换为 C int(或 C++ bool 值)(Python C API)

python multiprocessing,管理器启动进程生成循环

php - 将两个 $_GET 变量拆分为路径

regex - 删除 PostgreSQL 中的所有 Unicode 空格分隔符?