Сопоставление шаблонов Android / Java

По какой-то причине я не могу получить соответствие шаблону для «preference_network_», за которым следует что-либо еще в виде одной строки. Я хочу иметь возможность проверить, содержит ли ключ предпочтения «preference_network_», используя метод key.matches(). Как я могу заставить это работать, я пробовал несколько вещей, но безуспешно. Спасибо заранее.

ОБНОВЛЕНИЕ

Извините, что не разъяснил. Все эти решения я могу реализовать и знаю о них. Я пытаюсь использовать функцию «key.matches(String RegularExpression)», где ключ является параметром метода onSharedPreferenceChangeListener. Это то, что у меня проблемы с работой.

И я знаю, что мне не нужно использовать это, я могу использовать startWith просто отлично. Мне просто интересно.

Спасибо


person jjNford    schedule 15.11.2011    source источник


Ответы (2)


решения без использования шаблонов:

str.startsWith("preference_network_");
str.contains("preference_network_");

С узорами

// the same as contains.
Pattern p = Pattern.compile("preference_network_");
p.matcher(str).find(); 

// the same as startsWith.
Pattern p = Pattern.compile("^preference_network_");
p.matcher(str).find(); 

Если вы хотите использовать matches(), вам нужно написать полный шаблон:

Pattern p = Pattern.compile("^preference_network_.*");
p.matcher(str).matches(); 

Поскольку совпадения выполняются так, как если бы ваш шаблон начинался с ^ и заканчивался на $, т.е.

Pattern.compile("^something$").matcher(str).find() совпадает с Pattern.compile("something").matcher(str).matches()

person AlexR    schedule 15.11.2011
comment
содержит поиск строки параметра в каждой позиции. В вопросе он заявляет, что ищет preference_network_, за которым следует что-то еще - person Mister Smith; 15.11.2011

Без регулярного выражения:

boolean matches = myString.startsWith("preference_network_");
person Mister Smith    schedule 15.11.2011