Как создать несколько групп в регулярном выражении? - PullRequest
0 голосов
/ 21 июня 2019

Из строки мне нужна группа источника, т.е. до TO, и цель, т.е. после TO. При этом мне нужна подгруппа из источника, т.е. (3:8) в одном шаблоне регулярных выражений.

MOVE A (3:8) TO B.

1 Ответ

0 голосов
/ 21 июня 2019

Сложно догадаться, чего здесь можно желать, я бы сказал, может быть, выражение, подобное:

([^(]+(\(.+?\)))\s*TO\s*(.*)

Демо

Тест

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "([^(]+(\\(.+?\\)))\\s*TO\\s*(.*)";
final String string = "MOVE A (3:8) TO B\n";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...