1

基本上我想捕获多个子组。我不是重复捕获组,也不是捕获重复组

如果有aaa我想得到以下子组:
$1:a
$2:a
$3:a

这可以通过(a)(a)(a)来实现。

我现在正试图按照(a){3}的方式来实现这一点,不幸的是,这只会导致
$1:a

编辑:我正在尝试在 Java 中执行此操作。我已经有另一个解决方案,它使用 StringBuilder 通过重复捕获组来生成正确的模式以获取预期的发生次数。
这个问题更多是出于好奇,因为我正在寻找一种更简单的方法来做到这一点。

Some1.Kill.The.DJ 提到的是我尝试在 Java 中做的事情。

4

1 回答 1

0

实际用例和正则表达式引擎将是真正回答这个问题所必需的,但对于您提供的示例,这可以使用与表达式的全局模式匹配来完成(a)。在python中它会这样做......

>>> import re
>>> test = "aaa"
>>> re.findall(r'(a)', test)
['a', 'a', 'a']

在 Perl 中,它会添加 /g 修饰符等。全局模式匹配将尝试在给定字符串中尽可能多地匹配表达式。

于 2012-11-27T17:07:45.460 回答