Я нашел аналогичный вопрос here. Однако я не получил его работу:Перекрытие регулярного выражения
У меня есть строка типа «my_token_string» и вам нужно регулярное выражение, чтобы вернуть маркеры «my_», «_token_» и «_string».
Обратите внимание: я не могу изменить java-код, потому что это часть другого программного обеспечения. Единственное, что я могу сделать, это указать шаблон и группу захвата :-)
Это то, что я испытал:
String p = "(?=(_[^_]*_?))";
int group = 1;
String test = "my_token_string";
Matcher m = Pattern.compile(p).matcher(test);
while (m.find()) {
System.out.println(m.group(group));
}
Но, конечно, это возвращает только жетоны «_token_» и «_string ».
+1 все равно нет никакой необходимости, не захватывая группы, так как они находятся внутри группы, что OP будет использовать, а не до него. – Pshemo