正则表达式捕获一组的多个重复

琐事

我有一个示例文本:

Lorem ipsum AB-CD-01 dolor sit amet, AB-CD-Foobar consectetur

我想捕获所有短语AB-CD- *。我正在尝试这样的事情:

pattern = re.compile("((AB-CD-\S+).*)*")
result = pattern.search(text)
print(result.groups()) # expected: ('AB-CD-01', 'AB-CD-Foobar')

我知道这是一个非常简单且基本的正则表达式问题,但是我找不到任何好的解决方案。

维克多·史翠比维

您可以使用更简单的模式re.findall

以string列表的形式返回string中pattern的所有非重叠匹配项从左到右扫描该字符串,并按找到的顺序返回匹配如果模式中存在一个或多个组,则返回一个组列表;否则,返回一个列表。如果模式具有多个组,则这将是一个元组列表空匹配项将包括在结果中,除非它们碰到另一个匹配项的开头。

带有更新的正则表达式的示例代码:

import re
p = re.compile(r'AB-CD-\S+')
test_str = "Lorem ipsum AB-CD-01 dolor sit amet, AB-CD-Foobar consectetur"
print(re.findall(p, test_str))
# => ['AB-CD-01', 'AB-CD-Foobar']

参见IDEONEregex演示

re.search只认定第一次出现,re.findall返回匹配的列表(如果没有捕获组在模式定义的-这就是为什么我建议删除它们)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java正则表达式中捕获同一组的多个实例

来自分类Dev

重复正则表达式捕获组的捕获部分

来自分类Dev

正则表达式:如何捕获一组括号,而不是另一组

来自分类Dev

Python正则表达式findall捕获重复的组

来自分类Dev

Java正则表达式-捕获重复的组

来自分类Dev

多行正则表达式 - 捕获重复组的问题

来自分类Dev

正则表达式捕获组参考 > 重复?

来自分类Dev

捕获重复组的 Java 正则表达式

来自分类Dev

仅在正则表达式中捕获重复组

来自分类Dev

如果仅重复一组符号,如何使正则表达式匹配?

来自分类Dev

如果仅重复一组符号,如何使正则表达式匹配?

来自分类Dev

一组重复数字的正则表达式

来自分类Dev

正则表达式仅匹配一组

来自分类Dev

提取一组单词的正则表达式

来自分类Dev

Scala正则表达式中的多个捕获组

来自分类Dev

python正则表达式多个可选捕获组

来自分类Dev

正则表达式,贪婪量词多个捕获组

来自分类Dev

java解析正则表达式多个捕获组

来自分类Dev

正则表达式由于重复捕获组而不是重复捕获组而不匹配

来自分类Dev

正则表达式捕获组一

来自分类Dev

正则表达式:捕获组?

来自分类Dev

正则表达式,捕获组

来自分类Dev

正则表达式捕获组

来自分类Dev

正则表达式-重复捕获

来自分类Dev

正则表达式与重复组

来自分类Dev

正则表达式重复组

来自分类Dev

是否在Notepad ++中使用正则表达式捕获一组数字以放在括号中的其他位置?

来自分类Dev

使用Python正则表达式在非捕获组中的多个捕获组

来自分类Dev

正则表达式捕获组无法捕获多个组