2014-09-20 5 views
0

나는 perl을 사용하고 움라우트 등의 악센트 부호가있는 문자열을 식별해야합니다. 정규 표현식 [A-z]을 사용하려고했으나 제대로 작동하지 않았습니다. 내가 사용하는 펄 코드는 다음과 같습니다perl의 악센트 부호가있는 문자 식별

if ($s =~ /[^\P{Latin}A-Za-z]/) { 
    # accented chars, do something 
} else { 
    # No accented chars, do something else 
} 

\p{Latin}가 (악센트 문자와 ç œ æ... 같은 문자를 포함하여) 라틴어 문자를 포함

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

[this] (http://perldoc.perl.org/perlre.html#Regular-Expressions) 체크하고 싶을 것입니다. . 희망이 도움이됩니다! – Cullub

+0

로케일에 따라 다르다고 생각하지만 확장 된 범위에있는 모든 것이 악센트 부호가있는 문자이면'[\ x80- \ FF] +'를 사용할 수 있습니다. – sln

답변

2

이 뭔가를 시도 할 수 있습니다. 당신은 대문자 P로이 클래스를 부정 할 수 \P{Latin}(즉 라틴어 문자를 제외한 모든 문자가 포함되어 있습니다.)

이이 부정 문자 클래스에 넣어 경우 : [^....] 두 개의 부정을 구하십시오. 따라서 [^\P{Latin}]\p{Latin}과 같습니다. 그러나 네가 문자 클래스를 사용하지 않으므로 원하지 않는 문자는 쉽게 제외 할 수 있습니다. [^\P{Latin}A-Za-z]

+0

Casimir, 고맙습니다. – RVS

+0

추가 질문 : 영어 이외의 문자가 악센트를 받거나 힌디어에 있는지 어떻게 식별합니까? – RVS

+1

@RVS 후속 조치로 [perluniprops] (http://perldoc.perl.org/perluniprops.html)를 읽으면 코드 포인트에서 유니 코드 속성이 perl과 일치하는지 확인할 수 있습니다. – cajwine

관련 문제