Как правильно составить регулярное выражение в java?

Добрый день! Помогите составить регулярное выражение для поиска нужной буквы или нескольких букв используя String.matches();
ArrayList<String> list = new ArrayList<String>();
    list.add("роза"); //0
    list.add("лира"); //1
    list.add("лоза"); //2
for (int i = 0; i < list.size(); i++)
    {
        //удалять из списка строк все слова, содержащие букву «р»
        if (list.get(i).matches(".*р.*"))
        {
            list.remove(i);
        }
     }

вывод на экран
лира
лоза
ираз
Вопрос как правильно составить регулярку что был поиск по всем символам в строке?
Спасибо
  • Вопрос задан
  • 259 просмотров
Решения вопроса 1
У вам ошибка в алгоритме перебора.

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

Перебирайте тогда уж в обратном направлении. Или воспользуйтесь итератором - у него есть метод remove().

А проверять можно просто: matches("р")
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev
software engineer
А какой сейчас результат? На первый взгляд регулярка верная.

Что значит поиск по всем символам? Вам же одну букву нужно найти?

P.S. для поиска одной буквы или даже слова, менее затратно будет через поиск подстроки (index), чем регулярки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы