在Perl中识别重音字符
问题描述:
我使用Perl,我需要识别具有变音符号等重音字符的字符串。我尝试使用正则表达式[A-z],但这不起作用。我用Perl代码片段是:在Perl中识别重音字符
if ($s =~ /^[A-za-z0-9_]+$/) {
# No accented chars, do something
} else {
accented chars, do something else
}
答
你可以尝试这样的事情:
if ($s =~ /[^\P{Latin}A-Za-z]/) {
# accented chars, do something
} else {
# No accented chars, do something else
}
\p{Latin}
包含拉丁字母(包括重音字母和喜欢ç œ æ...
字符)。你可以否定这个类有一个大写的Y:\P{Latin}
(即包含了除拉丁字母的所有字符。)
如果你把它放进一个否定的字符类:[^....]
你获得两个否定。所以[^\P{Latin}]
与\p{Latin}
相同。但是因为你有一个否定字符类,你可以很容易地排除你不想要的字符:[^\P{Latin}A-Za-z]
可能想检查[this](http://perldoc.perl.org/perlre.html#Regular-Expressions)out 。希望能帮助到你! – Cullub 2014-09-20 22:29:12
我认为这取决于语言环境,但如果您在扩展范围内的所有内容都是重音字符,则可以使用'[\ x80- \ FF] +'。 – sln 2014-09-20 23:12:11