2015-08-28 3 views
4

Я знаю, что \w соответствует любому символу слова [a-zA-Z0-9_] или [\p{L}\p{N}_] если скомпилирован с (?u).Как совместить языковые символы в регулярном выражении?

Французский язык содержит 42 символов [a-zàâæçéêëîïôœùûüÿ]. Возможно ли построить мое регулярное выражение по моему locale.

Как я могу сопоставить [a-zàâæçéêëîïôœùûüÿ] с \w?

Частичным ответом было бы использовать регулярные выражения unicode с \p{Latin}.

+2

Пожалуйста, отметьте свой вопрос на языке программирования, который вы используете. Вы получите лучший ответ таким образом. –

+0

Возможный дубликат [Регулярное выражение для соответствия неанглийским символам?] (Http://stackoverflow.com/questions/150033/regular-expression-to-match-non-english-characters) –

+0

Это зависит от вашего механизма регулярных выражений , но '\ w' обычно, или может быть сделано, зависит от языка. – chepner

ответ

2

l модификатор делает матч локали известно:

"foo" ~= m/\w/l; 

Вместо использования l непосредственно, однако, использовать use locale на ссылку моба.

+0

Является ли '' 'особым флагом Perl'? – nowox

+0

Возможно? Нет стандартного набора флагов, поэтому для вопросов регулярного выражения требуется специальный языковой тег. – chepner

+3

https://metacpan.org/pod/distribution/perl/pod/perlre.pod#Character-set-modifiers - рекомендует, чтобы вы не использовали модификатор '/ l' напрямую. Вместо этого 'use locale' и любое регулярное выражение, скомпилированное в области вашей локали, будут неявно использовать модификатор'/l'. – mob

Смежные вопросы