如何编写捕获无限数量组的正则表达式?

问题描述 投票:1回答:2

我有一个包含多个单词的字符串,如str1, str2, str3, ... strN。单词的数量可以是任意的,并且在写正则表达式时是未知的。

是否可以编写匹配整个字符串和捕获组的正则表达式,每组一个单词?这是将捕获以下组:

第1组:str1 ... N组:strN

原因:此字符串是较大字符串的一部分。可以使用正则表达式捕获大字符串的其他元素。我可以使用正则表达式解析大字符串,并将包含多个单词的字符串捕获到一个组。然后我可以把这个组分成其他str(s)。我认为如果存在,那么一个带有正则表达式的整个大字符串而不分割的解决方案将更加优雅。

regex parsing regex-group
2个回答
4
投票

如果您的输入字符串名为input

final String[] groups = input.split("\\s*,\\s*");

groups数组将包含所有匹配项。


0
投票

你可以做一些非常相似的事情:只用一组编写正则表达式,然后检查该组的所有匹配项。在java中它看起来像这样:

    Pattern p = Pattern.compile("\\b(\\w+)\\b(?:,\\s)*");
    Matcher m = p.matcher("str1, str2, str3, ... strN");
    while(m.find()){
        System.out.println(m.group(1));
    }

结果是:

str1
str2
str3
...
strN

纯正的正则表达式是\b(\w+)\b(?:,\s)*,其中(?:是一个非捕获组(不算作一组)。

© www.soinside.com 2019 - 2024. All rights reserved.