Получите странный вывод из этого кода.Является ли это регулярным выражением неправильным?
- Количество захвата групп: 3
- Найдено значение (capturint группа (1)): Этот заказ был сделан для QT300
- Найдено значение (capturint группа (2)): 0
- Найдено значение (группа захвата (3)):! ОК?
Не должно ли регулярное выражение разбиваться на первое «3», так как это первая цифра после всех символов?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CaptureGroups1 {
public static void main(String args[]) {
String line = "This order was placed for QT3000! OK?";
String pattern = "(.*)(\\d+)(.*)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
int count = m.groupCount();
System.out.println("Number of capturing groups: " + count + '\n');
if (m.find()) {
for (int i = 1; i <= count; i++) {
System.out.println("Found value(capturint group(" + i + ")): " + m.group(i));
}
} else {
System.out.println("Not Found");
}
}
}
Это правильно в зависимости от того, что вы хотите сделать. –
@SotiriosDelimanolis Поскольку он хочет захватить более одной группы, я не думаю, что это можно считать правильным. –
Публикация блока кода и просто высказывание «* это неправильно? *» Не приведет вас никуда. Опишите, что вы хотите, и сообщите нам, есть ли какие-либо ошибки/неожиданные результаты. –