当前位置: 首页 > 面试题库 >

使用Python将一行与多个正则表达式匹配

邢新
2023-03-14
问题内容

有没有办法查看一行是否包含与一组正则表达式模式匹配的单词?如果我有[regex1, regex2, regex3],并且想查看某行是否与其中任何一条匹配,我该怎么做?现在,我正在使用re.findall(regex1, line),但一次只能匹配1个正则表达式。


问题答案:

您可以使用内置函数any(或all如果所有正则表达式必须匹配)和生成器表达式来遍历所有正则对象。

any (regex.match(line) for regex in [regex1, regex2, regex3])

(或者any(re.match(regex_str, line) for regex in [regex_str1, regex_str2, regex_str2]),当然,如果正则表达式不是预编译的正则表达式对象)

尽管与将正则表达式合并到单个表达式中相比,这是不够的-
如果此代码对时间或CPU至关重要,则应改用包含所有需求的单个正则表达式,使用特殊的|regex运算符将原始表达式分开。组合所有正则表达式的简单方法是使用字符串“
join”运算符:

re.match("|".join([regex_str1, regex_str2, regex_str2]) , line)

尽管如果原始正则表达式确实使用了|运算符,则在此格式上组合正则表达式可能会导致错误的表达式。



 类似资料:
  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 我有一个输入字符串。 我正在考虑如何有效地将此字符串与多个正则表达式匹配。 我想针对这些正则表达式模式进行匹配,如果其中至少一种匹配则返回: 我不确定如何一次匹配多种模式。有人可以告诉我我们如何有效地做到这一点吗? 问题答案: 如果只有几个正则表达式,并且在编译时都知道它们,那么这就足够了: 如果它们更多,或者它们在运行时加载,则使用模式列表:

  • 给定下面的字符串 [NeMo(PROD)]10.10.100.100(EFA-B-3)[博科FC-Switch]传感器:电源#1(SNMP自定义表)关闭(无此名称(SNMP错误#2)) 我尝试获取多个匹配项以提取以下值: 因为我是正则表达式的初学者,所以我试图定义一些“规则”: 提取第一个圆括号内的第一个值,例如PROD 提取第一个闭合方括号和第二个开口圆括号之间的值,例如10.10.100.10

  • 我有一根线,比如: 如何匹配每行的最后一个?顺便说一句,这是我试图在Sublime的文本中做到的。这些值不一致,就像我在这里看到的,我有几百行要替换。 我尝试了,但这与相匹配。

  • 问题内容: 我没有JavaScript方面的丰富经验,但是我正在尝试创建一个标记系统,而不是使用or ,而是使用。 我该如何使用而不是。我尝试做并添加,但是失败了。 问题答案: 您可以这样逃避它。 或只使用indexOf

  • 我需要使用通配符类型搜索筛选一组字符串,如下所示: 寻找应该匹配你好,但不是Helo 查找应该匹配"pant"和"想要"但不匹配"ant" 寻找应该匹配"吉普赛人"和"典型" 代表一个或多个字符。我不介意手写或基于正则表达式的搜索。有什么想法吗?典型的。NET方法的通配符匹配0或更多,但我需要1个或更多字符。我该怎么做?