При использовании метода Matcher find () частичное совпадение возвращает false, но позиция совпадения в любом случае движется. В последующем вызове Find () пропускает эти частично соответствующие символы. Этот шаблон не совпадает с какой-либо частью ввода, поэтому найдите () возвращает false, но подчиненная "[0-9]+" совпадает с "3" . Если мы изменим шаблон на данный момент и снова вызовут () < /code>, символы слева от слева и включают частичное совпадение, не протестированы для нового совпадения. Поведение? Во втором цикле шаблон [0-9] совпадает с символом "3" .
import java.util.regex.*;
public class Test {
public static void main(String[] args) {
final String INPUT = "a3;9";
String[] patterns = {"a", "[0-9]+:[0-9]", "[0-9]"};
Matcher matcher = Pattern.compile(".*").matcher(INPUT);
System.out.printf("Input: %s%n", INPUT);
matcher.reset();
for (String s: patterns)
testPattern(matcher, s);
System.out.println("=======================================");
patterns = new String[] {"a", "[0-9]:[0-9]", "[0-9]"};
matcher.reset();
for (String s: patterns)
testPattern(matcher, s);
}
static void testPattern(Matcher m, String re) {
m.usePattern(Pattern.compile(re));
System.out.printf("Using regex: %s%n", m.pattern().toString());
// Testing for pattern
if(m.find())
System.out.printf("Found %s, end-pos: %d%n", m.group(), m.end());
}
}
Подробнее здесь: https://stackoverflow.com/questions/446 ... s-position
Частичное соответствие изменяет позицию маттера ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Является ли их любым методом найти размер метода поиска класса маттера ?? на Java
Anonymous » » в форуме JAVA - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-