1

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

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

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

原因:该字符串是较大字符串的一部分。可以使用正则表达式捕获大字符串的其他元素。我可以使用正则表达式解析大字符串并将具有多个单词的字符串捕获到一组。然后我可以将此组拆分为其他str(s). 我认为如果存在的话,带有正则表达式的整个大字符串没有拆分的解决方案会更加优雅。

4

2 回答 2

4

如果您的输入字符串被调用input

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

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

于 2012-01-07T12:22:57.753 回答
0

您可以做一些非常相似的事情:编写一个只有 1 个组的正则表达式,然后检查该组的所有匹配项。在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)*,其中(?:是非捕获组(不计入组)。

于 2012-01-07T12:33:29.903 回答