Проверка соответствия регулярного выражения
У меня есть регулярное выражение, которое, согласно тому, что я могу сказать, и тому, что говорит RegexPal, не соответствует полной строке, которую я тестирую (только ее самая правая часть). Тем не мение, matcher.matches()
возвращает истину!
Итак, какой самый надежный способ определить, действительно ли сопоставитель java.util.regex полностью соответствует строке?
Также предположим, что кто-то хочет использовать matcher.find() следующим образом:
if (a match was found)
{
while (matcher.find())
{
// Do whatever
}
]
Есть ли способ реализовать проверку на соответствие?
3 ответа
Функция match (), возвращающая true, будет означать некоторое совпадение. Является ли это "полной" строкой или нет, просто зависит от того, чем является ваше регулярное выражение. Например
"a"
будет соответствовать всем следующим
"a"
"abb"
"bab"
"bba"
если вы хотите найти полную строку, ваше регулярное выражение должно начинаться с ^
и заканчивается $
Например
"^a$"
будет соответствовать "a"
, но ничего из следующего
"abb"
"bab"
"bba"
Ну у меня никогда не было matches()
не работает, но вы можете использовать find()
затем используйте
matcher.start()==0&&matcher.end()==string.length()
Я не думаю, что вам нужно, если, потому что while(matcher.find())
следует проверить, но если вы делаете...
if(matcher.find()){
do{
//whatever
} while(matcher.find());
}