Как мне сопоставить латинские символы Юникода в ColdFusion или Java regex? - PullRequest
4 голосов
/ 01 июля 2011

Я ищу регулярное выражение ColdFusion или Java (для использования в функции замены), которое будет соответствовать только числам [0-9], буквам [az], но не включать ASCII португальских букв ( Латинский Unicode, как ç и ã).

Примерно так:

str = reReplaceNoCase(str, "match none number/letter but keep unicode latin chars", "", "ALL");

Input string: "informação 123 ?:#$%"
Desired outcome: "informação 123"

Я знаю, что могу сопоставлять буквы и цифры с [a-z][0-9], но это не соответствует буквам, таким как ç и ã.

1 Ответ

7 голосов
/ 01 июля 2011

Попробуйте использовать класс буквенно-цифровых символов: \w, он должен соответствовать буквам, цифрам и подчеркиванию.

Также вы можете использовать специальный именованный класс \p{L} (я не знаю, поддерживает ли парсер Java RegEx поддержкуЭто).Таким образом, в C # ваша задача может быть выполнена с использованием следующего кода:

var input = "informação 123 ?:#$%";
var result = Regex.Replace(input, @"[^\p{L}\s0-9]", string.Empty);

Regex [^\p{L}\s0-9] означает: любой символ не в этом классе (все буквы, пробел, цифры).Тем самым он соответствует вашему примеру ?:#$%, и мы можем заменить эти символы пустой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...