Частичное соответствие изменяет позицию маттераJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Частичное соответствие изменяет позицию маттера

Сообщение Anonymous »

При использовании метода 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»