पैटर्न कम्पाइल करना
Pattern.compile और Matcher
पैटर्न कम्पाइल करना, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Pattern और Matcher की जोड़ी
Java regex java.util.regex में मौजूद है। Pattern एक संकलित रेगुलर एक्सप्रेशन है; Matcher उस पैटर्न को किसी विशिष्ट प्रवेश मान पर लागू करता है।
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher("abc123");
System.out.println(m.find());
}
}एक बार compile करें, बार-बार उपयोग करें
Pattern.compile अपेक्षाकृत महँगा है। किसी पैटर्न को एक बार compile करें और लूप में उसे बार-बार compile करने के बजाय कई इनपुट पर पुनः उपयोग करें।
import java.util.regex.Pattern;
public class Main {
static final Pattern DIGITS = Pattern.compile("\\d+");
public static void main(String[] args) {
System.out.println(DIGITS.matcher("a1").find());
System.out.println(DIGITS.matcher("bb").find());
}
}Java में बैकस्लैश को एस्केप करना
\d जैसे रेगेक्स टोकन में बैकस्लैश चाहिए, लेकिन Java स्ट्रिंग में भी एस्केप के लिए बैकस्लैश का उपयोग होता है। इसलिए सोर्स कोड में रेगेक्स \d को दर्शाने के लिए \\d लिखते हैं।
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern word = Pattern.compile("\\w+");
System.out.println(word.matcher("hello").matches());
}
}Matcher बनाना
pattern.matcher(input) पैटर्न को इनपुट स्ट्रिंग से जोड़ता है और ऐसा नया Matcher लौटाता है जो स्थिति पर नज़र रखता है।
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("the cat sat");
System.out.println(m.find());
}
}Matchers में स्थिति बनी रहती है
एक Matcher परिवर्तनशील स्थिति रखता है (वर्तमान स्थिति और पिछला मिलान)। हर इनपुट के लिए नया मैचर बनाएँ; एक ही मैचर को अलग-अलग थ्रेड में साझा न करें।
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d");
Matcher m = p.matcher("a1b2");
System.out.println(m.find());
System.out.println(m.find());
}
}अक्षर-रूप की अनदेखी करने वाला फ़्लैग
फ़्लैग को compile के दूसरे आर्ग्युमेंट के रूप में पास करें। Pattern.CASE_INSENSITIVE अक्षरों के बड़े-छोटे रूप की अनदेखी करता है।
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
System.out.println(p.matcher("I love JAVA").find());
}
}फ़्लैग को संयोजित करना
फ़्लैग को बिटवाइज़ OR ऑपरेटर से संयोजित करें। यहाँ हम MULTILINE जोड़ते हैं, ताकि एंकर हर पंक्ति पर मिलान कर सकें।
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("^a", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
Matcher m = p.matcher("apple\nApricot");
int count = 0;
while (m.find()) count++;
System.out.println(count);
}
}Static matches का संक्षिप्त तरीका
Pattern.matches(regex, input) एक ही कॉल में पैटर्न को compile करके जाँच करने वाला एक-बारगी सहायक है। यह सुविधाजनक है, लेकिन हर बार फिर से compile करता है।
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
System.out.println(Pattern.matches("\\d{3}", "123"));
System.out.println(Pattern.matches("\\d{3}", "12"));
}
}Pattern से विभाजित करना
compile किया हुआ Pattern split के ज़रिए स्ट्रिंग को विभाजित कर सकता है और उसी compile किए हुए रेगेक्स का कुशलतापूर्वक पुनः उपयोग कर सकता है।
import java.util.Arrays;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern comma = Pattern.compile("\\s*,\\s*");
String[] parts = comma.split("a, b ,c, d");
System.out.println(Arrays.toString(parts));
}
}Pattern की जाँच करना
pattern() मूल रेगेक्स स्ट्रिंग लौटाता है और flags() सक्रिय फ़्लैग को int के रूप में लौटाता है।
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("[a-z]+", Pattern.CASE_INSENSITIVE);
System.out.println(p.pattern());
System.out.println(p.flags());
}
}अमान्य Pattern त्रुटि उत्पन्न करते हैं
गलत ढंग से बना रेगेक्स, compile के समय PatternSyntaxException उत्पन्न करता है, जिससे आप त्रुटियों को जल्दी पकड़ सकते हैं।
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class Main {
public static void main(String[] args) {
try {
Pattern.compile("[unclosed");
} catch (PatternSyntaxException e) {
System.out.println("Invalid regex");
}
}
}त्वरित जाँच
बार-बार उपयोग किए जाने वाले रेगेक्स को static Pattern फ़ील्ड में compile क्यों करना चाहिए?
पुनरावलोकन
आपने पैटर्न compile किए:
Pattern.compileऐसा पुनः उपयोग योग्य, अपरिवर्तनीय और थ्रेड-सुरक्षित पैटर्न बनाता है;matcherउसे इनपुट से जोड़ता है।- Java सोर्स में रेगेक्स के बैकस्लैश को
\\के रूप में एस्केप करें। CASE_INSENSITIVEऔरMULTILINEजैसे फ़्लैग बिटवाइज़ OR से संयोजित होते हैं।Matcherमें स्थिति बनी रहती है, इसलिए हर इनपुट के लिए एक नया मैचर बनाएँ।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “पैटर्न कम्पाइल करना” पाठ निःशुल्क है?
हाँ—“पैटर्न कम्पाइल करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“पैटर्न कम्पाइल करना” में मैं क्या सीखूँगा?
Pattern.compile और Matcher आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“पैटर्न कम्पाइल करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- पैटर्न कम्पाइल करना
- खोजना और मिलान करना
- कैप्चरिंग समूह
- Regex से प्रतिस्थापन