Позитивный взгляд с разделенным запятыми списком - PullRequest
0 голосов
/ 30 мая 2018

Я - разработчик Java, и я новичок в Regex, у меня такая же проблема, как у здесь, в Stackoverflow .У меня есть 2 проблемы,

  • SKIP не работает в Java
  • Я начал следовать второму подходу в соответствии с этой ссылкой Regex , но мой вариант использования, как показано ниже,

если у меня есть строка типа,

It is very nice in summer and in summer time we swim, run, tan

Она должна извлекаться на основе Положительного взгляда, "летнее время мы", она должна извлекать [smim, run, tan] как массив.

Я застрял здесь, пожалуйста, помогите.

1 Ответ

0 голосов
/ 30 мая 2018

В 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...