Regex: извлечь запись несколько раз - PullRequest
0 голосов
/ 07 июня 2018

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

Hi, <@W12313>, <@U333111>!

Мне нужно извлечь все совпадения с шаблоном <@([WU].+?)>.+, поэтому я получу список ["W12313", "U333111"].Я успешно выбрал один, но не знаю, как извлечь его в список.

Я использую Java-аромат.

1 Ответ

0 голосов
/ 07 июня 2018

Используйте <@([WU][^>]*)> регулярное выражение со следующим кодом:

String s = "Hi, <@W12313>, <@U333111>!";
Pattern pattern = Pattern.compile("<@([WU][^>]*)>");
Matcher matcher = pattern.matcher(s);
List<String> res = new ArrayList<>();
while (matcher.find()){
    res.add(matcher.group(1)); 
} 
System.out.println(res);
// => [W12313, U333111]

См. Демонстрацию Java и демонстрацию регулярного выражения .

совпадения с шаблоном

  • <@ - подстрока <@
  • ([WU][^>]*) - Группа захвата 1:
    • [WU] - W или U а затем
    • [^>]* - класс отрицанных символов, соответствующий 0+ символам, отличным от >
  • > - > char.

Если после W или U могут быть только цифры, замените [^>]* на [0-9]*.

Если после ASCII может быть любой символ в верхнем регистре после @,заменить [WU] на [A-Z].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...