Поведение регулярных выражений Python и Java отличается при использовании одного и того же регулярного выражения - PullRequest
1 голос
/ 25 июня 2019

Есть несколько вопросов по этому поводу, но без ответа на мой вопрос. Я хочу использовать pattern и matcher, чтобы найти шаблон в строке, а затем создать список из совпадений, которые также включают остальные несоответствия.

 String a = "125t160f"; // The "t" could be replaced with symbols such as "." or anything so I wish to take one of anything after many digits.
 Matcher m = Pattern.compile("(\\.?\\d+\\.)").matcher(a);
 System.out.println(m.find());

Мой текущий результат:

Ложная

Мой ожидаемый результат должен быть в списке:

["125t", "160f"] // Я понимаю, как это сделать в Python, но не в Java. Так может кто-нибудь помочь мне в этом.

1 Ответ

1 голос
/ 25 июня 2019

Ваш шаблон должен быть \d+\D:

String a = "125t160f";
Matcher m = Pattern.compile("\\d+\\D").matcher(a);
while (m.find()) {
    System.out.println(m.group(0));
}

Приведенный выше шаблон регулярного выражения говорит, что он соответствует одной или нескольким цифрам, за которыми следует один нецифровый символ.Если мы не можем полагаться на нецифровый символ, чтобы знать, когда прекратить сопоставление, нам нужно знать, сколько цифр потреблять.

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