2012-01-23 2 views
4

문자 클래스의 모든 양식을 명시 적으로 나열하지 않고 일부 유니 코드 인코딩을 사용하여 인코딩 된 텍스트의 특정 문자의 모든 악센트 부호가있는 형식과 일치하는 정규 표현식을 작성하고 싶습니다.특정 문자의 악센트 부호가있는 모든 양식을 일치시키는 방법은 무엇입니까?

내가 a의 악센트 버전과 일치하려는 경우는 ISO-8859-1에 살고에만 a 년대를 가져오고 다른 악센트가있을 수 있습니다 그래서, 예를 들어, [aàáâãäå]이 불충분

그것은 거기에서 일어나지 않습니다. 받아 들여질 수있는 것은 \p{Base_Character: a}과 같은 것이고, 유니 코드에 정의 된 것과 같은 것입니다. 이 일을하는 무언가가 존재합니까?

편집 : 문자열을 ASCIIfy 할 수 없습니다 --- 문자열이 데이터베이스에 있습니다. 직접 액세스 할 수 없습니다. 사실 여기에는 코드 수준의 액세스 권한이 없습니다. 내가 줄 수있는 유일한 입력은 정규식입니다.

답변

0

악보 버전 관련 코드를 나열하는 것 이외의 다른 라이브러리는 없습니다. UTF-8 내에서도 코드들 사이에 식별 가능한 패턴이 보이지 않습니다. 솔직히 다른 악센트 부호가있는 버전 목록을 만드는 것은 그리 오래 걸리지 않을 것입니다.

0

나는 그렇게 생각하지 않습니다. 언어/플랫폼 및 필요에 따라 a와 (과) 일치하기 전에 문자열을 "ascii-fy"(으)로 바꾸는 것이 좋습니다. 예를 들어 Java의 경우 :

String s1 = "Hernán"; 
    String s2 = Normalizer.normalize(s1, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", ""); 
      // s2: "Hernan" 
    System.out.println(s2); 
    System.out.println(s2.matches(".*a.*")); 
관련 문제