如何组合两个正则表达式?

2024-03-28 23:48:34 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有两个正则表达式:

  1. id=123456
  2. discography=True

我如何检查它们是否都匹配正则表达式,而不知道这些字符串在输入中的顺序?在


Tags: 字符串idtrue顺序discography
3条回答

您可以使用两个lookaheads

^(?=.*id=123456)(?=.*discography=True)

从字符串(^)的开头,我们首先在任何地方寻找id=123456(由于.*)。但是lookahead实际上并不消耗任何东西,因此一旦找到模式,引擎就会跳回到它开始的地方(字符串的开头),并从第二个模式开始。在

正如eyquem所指出的,如果字符串中有换行符,.*不能越过它们,除非使用选项re.S(或{}-这只是一个别名)。在

但是,这看起来像是在尝试解析URL的查询字符串。也许你应该看看^{}。在

假设r1和r2是格式良好的regexp,则可以执行以下操作:

re.compile("(?=%s)%s" % (r1, r2))

如果您正在为第一个和第二个正则表达式寻找独立的检查,那么应该通过检查正则表达式是否有结果来工作。在

import re
results1 = re.search("id=([0-9]+)", "id=123456")
results2 = re.search("discography=(True|False)", "discography=True")
if results1 != None and results2 != None:
    print "Both matched"

相关问题 更多 >