Регулярное выражение: проверьте, содержит ли строка какие-либо заданные символы - PullRequest
0 голосов
/ 24 марта 2011

Мне нужно проверить, содержит ли строка какой-либо из следующих символов:

Á, À, Ã, É, Ê, Í, Ó, Õ, Ô, Ú, Ç

Iдумал о создании

"blá" .contains (regexExpression)

Правильно ли я думаю?Если так, как я могу это сделать?Я не знаю, как будет регулярное выражение

Ответы [ 3 ]

3 голосов
/ 24 марта 2011
Pattern regex = Pattern.compile("[ÁÀÃÉÊÍÓÕÔÚÇ]");
Matcher regexMatcher = regex.matcher(subjectString.toUpperCase());
if (regexMatcher.find()) {
    // Successful match
} else {
    // Match attempt failed
} 
3 голосов
/ 24 марта 2011

Взгляните на регулярные-выражения.info .Там вы найдете хорошую ссылку на то, как вы можете достичь определенных целей с помощью регулярного выражения.

Обратите внимание, что matches(regex) вернет true, только если вся строка соответствует регулярному выражению.Если вы просто хотите узнать, находится ли один из указанных символов в строке, используйте это:

String input = "blá";
input.toUpperCase().matches(".*[ÁÀÃÉÊÍÓÕÔÚÇ].*");

Редактировать: если вам нужно сопоставить больше символов Юникода, взгляните на регулярно-expressions.info ссылка на Unicode.

1 голос
/ 24 марта 2011

По моему опыту, лучше не использовать символ, но использовать шестнадцатеричное представление .

например:

'Á' - 0x00C1
'á' - 0x00E1

шестнадцатеричный код для любого символа, который вы можете найти здесь http://www.fileformat.info/info/unicode. Просто введите букву в поле поиска.

Ваше регулярное выражение будет:

[\x{00c1}\x{00e1}]++

Это будет работать в PHP. В Java будет \ u00c1 \ u00e1, если обязательно www.regular-expressions.info

Также вы можете использовать диапазон:

ÀÁÂÃÄÅÆ will be [\u00c0-\u00c6]++

Латинская добавка

Если вам нужно найти какой-либо символ из диапазона Latin-1 Supplement , вы можете использовать следующее:

[\p{InLatin-1_Supplement}]++
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...