English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Pattern类的CANON_EQ字段仅在两个字符规范相等时才匹配两个字符。Когда это значение используется в качествеcompile()
При указании знака метода, два символа будут совпадать, и совпадение произойдет только в том случае, если их полная нормативная разложение будет идентична.
Нормативное разложение является одной из форм规范化Unicode-текста
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); //Ищем объект мatcher Matcher matcher = pattern.matcher("\u1E03"); if(matcher.matches()) { System.out.println("Найдено соответствие"); } System.out.println("Не найдено соответствие"); } } }
Результат вывода
Найден соответствие
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); //Ищем объект мatcher 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); } System.out.println(ele + " не является соответствием для " + regex); } } } }
Результат вывода
å является соответствием для a? a? не является соответствием для a? a? не является соответствием для a? a? является соответствием для a? a? не является соответствием для a? a? не является соответствием для a?