Почему не работает Matcher.find()

246
14 апреля 2017, 20:38

Есть строка String str и в ней надо найти символы строки 1

 1=0;1;123.456;4;5;6;5;
 2=1;2;451.467;6;7;8;6;
 3=2;3;765.654;8;3;2;4;
 4=1;2;451.467;6;7;8;6;

есть

Pattern pattern;
Matcher m;
String s="1=(.+?)2=";
pattern = Pattern.compile(s);
    m = pattern.matcher(str);
if (m.find()) {Log.d("MyLog","Найдено");};
else {Log.d("MyLog","Не найдено");};

Результат: "Не найдено". Почему?

Answer 1

Чтобы ваш код работал, так как вы ожидаете добавьте флаг Pattern.DOTALL при создании объекта Pattern:

 pattern = Pattern.compile(s, Pattern.DOTALL);

Без этого режима, регулярное выражение вида . не подходит для символа новой строки.

Ссылка на документацию по регулярным выражениям в java

READ ALSO
Получение местонахождения в службе

Получение местонахождения в службе

Я получал местонахождение в Activity путем имлементирования LocationListener, переопределив метод onLocationChanged(),

186
Как увеличить иконку приложения

Как увеличить иконку приложения

При сборке приложения через Android Studio, иконка меньше многих других иконок приложении, как можно увеличить или что нужно настроить? Буду рад...

204
В библиотеке “cliche” Build error: ошибка package org.junit does not exist import org.junit.Test;

В библиотеке “cliche” Build error: ошибка package org.junit does not exist import org.junit.Test;

Проект запускаетсяНо при Build - выдаёт ошибку:

245
Замена в String.format '.' на ','

Замена в String.format '.' на ','

Пишу (русским языком) в формате разделитель ""(точка), в выводе "," (запятая)

199