识别perl中的重音字符

时间:2014-09-20 22:23:03

标签: regex perl

我正在使用perl,我需要识别具有重音字符的字符串,如umlaut等。我尝试使用正则表达式[A-z],但这并不是很有效。我使用的perl代码段是:

if ($s =~ /^[A-za-z0-9_]+$/ ) {
    # No accented chars, do something
} else {
    accented chars, do something else
}

1 个答案:

答案 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]