В Java регулярное выражение не может само по себе возвращать массив.
Но это регулярное выражение будет возвращать нужные значения с помощью цикла find()
:
(?<=summer time we |\G(?<!^), )\w+
Это почтиидентичен второму ответу , на который вы ссылались.
В Java 9+ вы можете создать массив следующим образом:
String s = "It is very nice in summer and in summer time we swim, run, tan";
String[] results = Pattern.compile("(?<=summer time we |\\G(?<!^), )\\w+")
.matcher(s).results().map(MatchResult::group)
.toArray(i -> new String[i]);
System.out.println(Arrays.toString(results));
Вывод
[swim, run, tan]
В Java 5+ это можно сделать с помощью цикла find()
:
String s = "It is very nice in summer and in summer time we swim, run, tan";
List<String> resultList = new ArrayList<String>();
Pattern regex = Pattern.compile("(?<=summer time we |\\G(?<!^), )\\w+");
for (Matcher m = regex.matcher(s); m.find(); )
resultList.add(m.group());
String[] results = resultList.toArray(new String[resultList.size()]);
System.out.println(Arrays.toString(results));