Pattern क्लास का CANON_EQ फील्ड दो वर्णों से तभी मिलान करता है जब वे कैनोनिकली समान हों। जब आप इसे compile() मेथड के फ्लैग मान के रूप में उपयोग करते हैं, तो दो वर्ण तभी मिलान होंगे यदि उनके पूर्ण कैनोनिकल विघटन (canonical decompositions) समान हों।
जहां कैनोनिकल विघटन यूनिकोड टेक्स्ट नॉर्मलाइज़ेशन फॉर्म्स में से एक है।
उदाहरण 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("मिलान मिला");
} else {
System.out.println("मिलान नहीं मिला");
}
}
}
आउटपुट
मिलान मिला
उदाहरण 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ḃ å के लिए मिलान नहीं है affi å के लिए मिलान नहीं है