我正在使用perl,我需要识别具有重音字符的字符串,如umlaut等。我尝试使用正则表达式[A-z],但这并不是很有效。我使用的perl代码段是:
if ($s =~ /^[A-za-z0-9_]+$/ ) {
# No accented chars, do something
} else {
accented chars, do something else
}
答案 0 :(得分:2)
您可以尝试这样的事情:
if ($s =~ /[^\P{Latin}A-Za-z]/) {
# accented chars, do something
} else {
# No accented chars, do something else
}
\p{Latin}
包含拉丁字母(包括重音字母和ç œ æ...
等字符)。您可以使用大写P来否定此类:\P{Latin}
(包含拉丁字母以外的所有字符。)
如果你把它放在一个否定的字符类中:[^....]
你得到两个否定。因此[^\P{Latin}]
与\p{Latin}
相同。但是,由于您有一个否定的字符类,您可以轻松地排除您不想要的字符:[^\P{Latin}A-Za-z]