जावा रेगुलर एक्सप्रेशन
रेगुलर एक्सप्रेशन क्या है?
रेगुलर एक्सप्रेशन वर्णों का एक क्रम है जो एक खोज पैटर्न बनाता है। जब आप किसी टेक्स्ट में डेटा खोजते हैं, तो आप जो खोज रहे हैं उसका वर्णन करने के लिए आप इस खोज पैटर्न का उपयोग कर सकते हैं।
रेगुलर एक्सप्रेशन एकल वर्ण या अधिक जटिल पैटर्न हो सकता है।
रेगुलर एक्सप्रेशन का उपयोग सभी प्रकार की टेक्स्ट सर्च और टेक्स्ट रिप्लेस ऑपरेशंस को करने के लिए किया जा सकता है।
जावा में बिल्ट-इन रेगुलर एक्सप्रेशन क्लास नहीं है, लेकिन हम रेगुलर एक्सप्रेशन java.util.regex
के साथ काम करने के लिए पैकेज को इम्पोर्ट कर सकते हैं। पैकेज में निम्नलिखित वर्ग शामिल हैं:
Pattern
कक्षा - एक पैटर्न को परिभाषित करता है (खोज में उपयोग किया जाने वाला)Matcher
कक्षा - पैटर्न की खोज के लिए प्रयुक्तPatternSyntaxException
क्लास - रेगुलर एक्सप्रेशन पैटर्न में सिंटैक्स त्रुटि को दर्शाता है
उदाहरण
पता लगाएँ कि क्या वाक्य में "w3schools" शब्द की कोई आवृत्ति है:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("Visit W3Schools!");
boolean matchFound = matcher.find();
if(matchFound) {
System.out.println("Match found");
} else {
System.out.println("Match not found");
}
}
}
// Outputs Match found
उदाहरण समझाया गया
इस उदाहरण में, "w3schools" शब्द को एक वाक्य में खोजा जा रहा है।
सबसे पहले, पैटर्न Pattern.compile()
विधि का उपयोग करके बनाया गया है। पहला पैरामीटर इंगित करता है कि कौन सा पैटर्न खोजा जा रहा है और दूसरे पैरामीटर में एक ध्वज है जो इंगित करता है कि खोज केस-संवेदी होनी चाहिए। दूसरा पैरामीटर वैकल्पिक है।
matcher()
विधि का उपयोग स्ट्रिंग में पैटर्न को खोजने के लिए किया जाता है । यह एक मैचर ऑब्जेक्ट देता है जिसमें किए गए खोज के बारे में जानकारी होती है।
यदि पैटर्न स्ट्रिंग में पाया गया find()
था और गलत नहीं मिला तो विधि सत्य लौटाती है।
झंडे
विधि में झंडे compile()
खोज के प्रदर्शन के तरीके को बदलते हैं। यहां उनमें से कुछ हैं:
Pattern.CASE_INSENSITIVE
- खोज करते समय अक्षरों के मामले पर ध्यान नहीं दिया जाएगा।Pattern.LITERAL
- पैटर्न में विशेष वर्णों का कोई विशेष अर्थ नहीं होगा और खोज करते समय उन्हें सामान्य वर्णों के रूप में माना जाएगा।Pattern.UNICODE_CASE
CASE_INSENSITIVE
- अंग्रेजी वर्णमाला के बाहर के अक्षरों के मामले को भी अनदेखा करने के लिए ध्वज के साथ इसका उपयोग करें
नियमित अभिव्यक्ति पैटर्न
विधि का पहला पैरामीटर Pattern.compile()
पैटर्न है। यह बताता है कि क्या खोजा जा रहा है।
ब्रैकेट का उपयोग वर्णों की एक श्रृंखला को खोजने के लिए किया जाता है:
Expression | Description |
---|---|
[abc] | Find one character from the options between the brackets |
[^abc] | Find one character NOT between the brackets |
[0-9] | Find one character from the range 0 to 9 |
अक्षरों से परे
मेटाकैरेक्टर एक विशेष अर्थ वाले पात्र होते हैं:
Metacharacter | Description |
---|---|
| | Find a match for any one of the patterns separated by | as in: cat|dog|fish |
. | Find just one instance of any character |
^ | Finds a match as the beginning of a string as in: ^Hello |
$ | Finds a match at the end of the string as in: World$ |
\d | Find a digit |
\s | Find a whitespace character |
\b | Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b |
\uxxxx | Find the Unicode character specified by the hexadecimal number xxxx |
परिमाणकों
क्वांटिफायर मात्रा को परिभाषित करते हैं:
Quantifier | Description |
---|---|
n+ | Matches any string that contains at least one n |
n* | Matches any string that contains zero or more occurrences of n |
n? | Matches any string that contains zero or one occurrences of n |
n{x} | Matches any string that contains a sequence of X n's |
n{x,y} | Matches any string that contains a sequence of X to Y n's |
n{x,} | Matches any string that contains a sequence of at least X n's |
नोट: यदि आपकी अभिव्यक्ति को किसी विशेष वर्ण की खोज करने की आवश्यकता है तो आप उनसे बचने के लिए बैकस्लैश ( \ ) का उपयोग कर सकते हैं। जावा में, स्ट्रिंग्स में बैकस्लैश को स्वयं से बचने की आवश्यकता होती है, इसलिए विशेष वर्णों से बचने के लिए दो बैकस्लैश की आवश्यकता होती है। उदाहरण के लिए, एक या अधिक प्रश्न चिह्न खोजने के लिए आप निम्न अभिव्यक्ति का उपयोग कर सकते हैं: "\\?"