Каково регулярное выражение для испанского слова? - PullRequest
6 голосов
/ 22 мая 2009

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

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

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

Ответы [ 3 ]

6 голосов
/ 22 мая 2009

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

1 голос
/ 22 мая 2009

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

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

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

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

1 голос
/ 22 мая 2009

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

...