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

Языки регулярных выражений используют \B для включения A..Z, a..z, 0..9 и _, а \b определяется как граница слова.

Как написать регулярное выражение, которое соответствует всем допустимым испанским словам, включая такие символы, как: á, í, ó, é, ñ и т. д.?

Я использую .NET.


person Dan Vanderboom    schedule 22.05.2009    source источник


Ответы (3)


Используйте испанскую локаль и сделайте ваше регулярное выражение чувствительным к локали.

person Dave    schedule 22.05.2009

Ваша система регулярных выражений должна иметь что-то эквивалентное Python re.L (также известное как re.LOCALE), чтобы сделать регулярное выражение зависимым от локали, чтобы то, что является символом слова, а что не меняется с локалью, как и «границы слов» и т. д. Вместо этого вы спрашиваете для способа компенсировать некоторую данную систему регулярных выражений, не поддерживающую локаль, все равно пытающуюся решить проблему...?

person Alex Martelli    schedule 22.05.2009

Это сильно зависит от языка (и механизма регулярных выражений), который вы используете.

В Perl \w соответствует всем символам слова, независимо от языка или алфавита, а что-то вроде /\b(\w+)\b/ будет (вероятно) соответствовать испанским словам, а также английским или русским словам.

В языках, использующих PCRE, \w (и, следовательно, вероятно, \b) НЕ соответствуют символам Unicode. Вероятно, вам потребуется создать свой собственный набор. Я предлагаю что-то вроде [\wáéíóúñ] (соответствует всем символам слов, а также нужным диакритическим символам), и библиотека PCRE должна быть предварительно собрана с поддержкой Unicode, прежде чем это вообще заработает.

Если вы используете что-то другое, удачи. Некоторые механизмы регулярных выражений даже не поддерживают Unicode.

person Chris Lutz    schedule 22.05.2009