我有一个包含多个单词的字符串,例如str1, str2, str3, ... strN
。单词的数量可以是任意的,在编写正则表达式时不知道。
是否可以编写匹配整个字符串和捕获组的正则表达式,每组一个单词?即将捕获以下群组:
第1组:str1
...
N组:strN
原因:此字符串是较大字符串的一部分。可以使用正则表达式捕获大字符串的其他元素。我可以使用正则表达式解析大字符串,并将包含多个单词的字符串捕获到一个组。然后我可以将此组拆分为其他str(s)
。我认为如果存在一个带正则表达式的整个大字符串的解决方案,如果它存在,将更加优雅。
答案 0 :(得分:4)
如果您的输入字符串名为input
:
final String[] groups = input.split("\\s*,\\s*");
groups
数组将包含所有匹配项。
答案 1 :(得分: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)*
,其中(?:
是非捕获组(不计为组)。