如何在正则表达式中匹配特定语言的字符?

4
我知道\w匹配任何字母字符[a-zA-Z0-9_]或使用(?u)编译时的[\p{L}\p{N}_]
法语语言有42个字符[a-zàâæçéêëîïôœùûüÿ]。是否可以根据我的locale构建正则表达式?
如何使用\w匹配[a-zàâæçéêëîïôœùûüÿ]
部分答案是使用带有\p{Latin}的Unicode正则表达式。

2
请在您的问题中标记您正在使用的编程语言。这样做可以让您获得更好的答案。 - Tim Biegeleisen
可能是匹配非英语字符的正则表达式?的重复问题。 - KeyNone
这取决于你的正则表达式引擎,但通常情况下\w是或可以被设置为区域敏感。 - chepner
1
regex101似乎只使用u修饰符来匹配Unicode字符,这可能比您想要的更通用。 (例如,ø不在法语字母表中,但是/\w/u将匹配它。) - chepner
2
现在这个问题被标记为“perl”和“pcre”。你问的是哪一个? - reinierpost
显示剩余3条评论
1个回答

2

l修饰符使匹配具有区域设置感知性:

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

不要直接使用l,而是根据mob的链接使用use locale


“l”是Perl特定的标志吗? - nowox
可能吗?没有标准的标志集,这就是为什么正则表达式问题需要特定的语言标签。 - chepner
3
https://metacpan.org/pod/distribution/perl/pod/perlre.pod#Character-set-modifiers -- 建议您不要直接使用/l修饰符。相反,使用use locale,在您的语言环境范围内编译的任何正则表达式都将隐式地使用'/l修饰符。 - mob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接