我有如下字符串:

@property.one@some text [email protected]@another optional text here etc

其中包含@.+?@字符串。

我想通过一个正则表达式匹配将所有这些“变量”捕获到组中,但是由于正则表达式在重复时仅返回最后捕获的组,因此似乎是不可能的。

最佳答案

你说得对;大多数正则表达式版本(包括Java)不允许访问重复捕获组的单个匹配项。 (Perl 6和.NET确实允许这样做,但这对您没有帮助)。

你还能做什么?

Pattern regex = Pattern.compile("@[^@]+@");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    // matched text: regexMatcher.group()
    // match start: regexMatcher.start()
    // match end: regexMatcher.end()
}

它将一一捕获@property.one@@property.two@等。

08-07 23:56