English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java의 패턴 CANON_EQ 필드와 예제

두 문자 규범이 일치할 때만 Pattern 클래스의 CANON_EQ 필드가 두 문자를 일치시킵니다. 이 값이 사용될 때compile()}메서드의 표지 값이면, 두 문자가 일치하며, 그들의 완전한 규범 분해가 일치할 때만 일치합니다.

규범 분해는 Unicode 텍스트 규범화 형식 중 하나입니다.

예제1

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CANON_EQ_Example {
   public static void main( String args[] ) {
      String regex = "b\u0307";
      //정규 표현식 컴파일
      Pattern pattern = Pattern.compile(regex, Pattern.CANON_EQ);
      //검색 매치 오브젝트
      Matcher matcher = pattern.matcher("\u1E03);
      if(matcher.matches()) {
         System.out.println("Match found");
      } else {
         System.out.println("Match not found");
      }
   }
}

출력 결과

일치 발견

예제2

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CANON_EQ_Example {
   public static void main( String args[] ) {
      String regex = "a\u030A";
      //정규 표현식 컴파일
      Pattern pattern = Pattern.compile(regex, Pattern.CANON_EQ);
      //검색 매치 오브젝트
      String[] input = {"\u00E5", "a\u0311", "a\u0325", "a\u030A", "a\u1E03", "a\uFB03"};
      for (String ele : input) {
         Matcher matcher = pattern.matcher(ele);
         if(matcher.matches()) {
            System.out.println(ele+"은"와 일치합니다.+regex);
         } else {
            System.out.println(ele+"은"와 일치하지 않습니다.+regex);
         }
      }
   }
}

출력 결과

å는a?와 일치합니다.
a?는a?와 일치하지 않습니다.
a?는a?와 일치하지 않습니다.
a?는a?와 일치합니다.
a?는a?와 일치하지 않습니다.
a?는a?와 일치하지 않습니다.