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

Python正则表达式-如何从通配符表达式捕获多个组?

巢海
2023-03-14
问题内容

我有一个Python正则表达式,其中包含一个可以出现零次或多次的组-但是当我之后检索组列表时,仅出现最后一个。例:

re.search("(\w)*", "abcdefg").groups()

这将返回列表(“ g”,)

我需要它返回(’a’,’b’,’c’,’d’,’e’,’f’,’g’,)

那可能吗?我该怎么做?


问题答案:

除了道格拉斯·里德(Douglas
Leeder)的解决方案之外
,以下是解释:

在正则表达式中,组数是固定的。在组后面放置一个量词不会增加组数(想象所有其他组索引都会增加,因为一个较早的组匹配了不止一次)。

当需要多次匹配子表达式时,带量词的组是使复杂的子表达式成为原子的方法。正则表达式引擎没有其他方法,只能将最后一个匹配项保存到组中。简而言之:用单个“无武装”正则表达式无法实现所需的功能,而您必须寻找另一种方法。



 类似资料:
  • 假设我有这个虚拟URL,我需要提取植物及其颜色作为 下面的I have正在按预期捕获我需要的元素,但是当我的URL中的植物少于4株时,它无法捕获任何东西。底部有一个指向regex测试员的链接,其中有示例代码和URL,您可以使用。 如何修改这个正则表达式,使其动态工作,从而在不需要静态URL结构的情况下捕获可用内容。现在,假设我最多只能捕获4株植物(8组) https://regex101.com/

  • 使用指南 - 统计设置 - 概述 - 通配符与正则表达式 1、通配符: 通配符,即 * 符号,可以添加在url中,代替任意字符。假设您添加的网站域名是url.com,则通配符的使用规则如下: 网站域名后不能直接添加通配符,如url.com* 这种方式会提示错误;通配符与域名至少间隔一个字符,如url.com?abab需用url.com?* 来表示; url.com/*,表示包含url.com/ 这

  • 问题内容: 我列出了大约12万个英语单词(基本上是该语言中的每个单词)。 我需要一个正则表达式,允许使用通配符aka 和来搜索这些单词。 一些例子: 如果用户搜索,它会匹配,例如或或。 如果用户搜索(以结尾的任何单词),则它将匹配或或或。 现在,大多数用户(尤其是对正则表达式不熟悉的用户)都知道,该用户只能替换1个字符,而可以替换0、1个或多个字符。我绝对想基于此构建我的搜索功能。 我的问题是:如

  • 问题内容: 我正在尝试使用Java expr在:之后捕获正确的部分,但是在以下代码中,打印的捕获组是整个字符串,怎么了? 问题答案: 子组的编号从1开始,全文为0。只需循环执行count + 1。

  • 我有一个工作正则表达式来提取一些信息。php代码如下所示: https://ideone.com/UdIaA7 与str:https://regex101.com/r/rF0uP7/5 带有str2的正则表达式:https://regex101.com/r/cV6iF9/1 然而,它在str上工作得很好,但在str2上却不匹配,我找不到原因

  • 我有3个正则表达式,但当模式匹配时执行相同的操作,所以我考虑将所有三个表达式合并为一个。我尝试了很多,但无法让“|”I.e”或“在我的正则表达式中工作 regex1:<代码>文本。替换(/([\u00A9-\u3299])/g,函数myFunction(x){…} regex2: regex3: 我试过这样做,但它不起作用regex: