निम्नलिखित का मिलान किया जाना चाहिए:
AAA123
ABCDEFGH123
XXXX123
क्या मैं कर सकता हूँ ".*123":?
निम्नलिखित का मिलान किया जाना चाहिए:
AAA123
ABCDEFGH123
XXXX123
क्या मैं कर सकता हूँ ".*123":?
जवाबों:
हाँ तुम कर सकते हो। वह काम करना चाहिए।
. = कोई भी चार\. = वास्तविक डॉट चरित्र.?= .{0,1}= किसी भी चार शून्य या एक बार मैच.*= .{0,}= किसी भी चार या अधिक बार मैच.+= .{1,}= किसी भी चार या एक से अधिक बार मिलान करेंहां, यह काम करेगा, हालांकि ध्यान दें कि .जब तक आप अभिव्यक्ति को संकलित नहीं करते तब तक डोटल ध्वज पास नहीं होगा।
Pattern pattern = Pattern.compile(".*123", Pattern.DOTALL);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.matches();
.कि मैं नई कहानियों से मेल खाऊंगा। मुझे खुशी है कि मैंने आपका उत्तर पढ़ा, मुझे इसका उपयोग करने की आवश्यकता है!
{.,\n,\r,\u2028,\u2029,\u0085}किसी भी वर्ण से मेल खाने के लिए उपयोग करने की आवश्यकता हो सकती है (यूनिकोड वर्ण अतिरिक्त पंक्ति-समाप्ति वर्ण हैं जो .कि जावा से मेल नहीं खाते हैं ), लेकिन बस {.,\n,\r}अधिकांश पाठ फ़ाइलों के लिए काम करेंगे।
[\s\S]किसी भी वर्ण के मिलान का एक लोकप्रिय तरीका है यदि आप DOTALL का उपयोग नहीं कर सकते हैं।
परिष्कृत रेगेक्स परीक्षण और विकास उपकरण बहुत सारे हैं, लेकिन यदि आप जावा में एक साधारण परीक्षण हार्नेस चाहते हैं, तो यहां आपके साथ खेलने के लिए एक है:
String[] tests = {
"AAA123",
"ABCDEFGH123",
"XXXX123",
"XYZ123ABC",
"123123",
"X123",
"123",
};
for (String test : tests) {
System.out.println(test + " " +test.matches(".+123"));
}
अब आप आसानी से नए टेस्टकेस जोड़ सकते हैं और नए पैटर्न आज़मा सकते हैं। मज़ा खोज regex है।
नहीं, *शून्य या अधिक वर्णों से मेल खाएगा। आपको उपयोग करना चाहिए +, जो इसके बजाय एक-या-अधिक से मेल खाता है।
यह अभिव्यक्ति आपके लिए बेहतर काम कर सकती है: [A-Z]+123
इसका सबसे आम तरीका मैंने देखा है कि यह एक चरित्र वर्ग के साथ है, जिसके सदस्य सभी संभावित पात्रों के सेट का एक विभाजन बनाते हैं।
आम तौर पर लोग लिखते हैं कि के रूप में [\s\S](खाली स्थान या गैर-सफ़ेद), हालांकि [\w\W], [\d\D], आदि सभी काम करेगा।
.*और.+नई लाइनों को छोड़कर किसी भी वर्ण के लिए हैं।
यदि आप नई पंक्तियों को शामिल करना चाहते हैं, तो निम्नलिखित अभिव्यक्तियाँ उन भाषाओं के लिए भी काम कर सकती हैं, जिनमें जावा या C ++ जैसे दोहरे पलायन की आवश्यकता होती है:
[\\s\\S]*
[\\d\\D]*
[\\w\\W]*
शून्य या अधिक समय के लिए, या
[\\s\\S]+
[\\d\\D]+
[\\w\\W]+
एक या अधिक बार के लिए।
कुछ भाषाओं जैसे कि C #, PHP, Ruby, PerL, Python, JavaScript के लिए दोहरी पलायन की आवश्यकता नहीं है:
[\s\S]*
[\d\D]*
[\w\W]*
[\s\S]+
[\d\D]+
[\w\W]+
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression{
public static void main(String[] args){
final String regex_1 = "[\\s\\S]*";
final String regex_2 = "[\\d\\D]*";
final String regex_3 = "[\\w\\W]*";
final String string = "AAA123\n\t"
+ "ABCDEFGH123\n\t"
+ "XXXX123\n\t";
final Pattern pattern_1 = Pattern.compile(regex_1);
final Pattern pattern_2 = Pattern.compile(regex_2);
final Pattern pattern_3 = Pattern.compile(regex_3);
final Matcher matcher_1 = pattern_1.matcher(string);
final Matcher matcher_2 = pattern_2.matcher(string);
final Matcher matcher_3 = pattern_3.matcher(string);
if (matcher_1.find()) {
System.out.println("Full Match for Expression 1: " + matcher_1.group(0));
}
if (matcher_2.find()) {
System.out.println("Full Match for Expression 2: " + matcher_2.group(0));
}
if (matcher_3.find()) {
System.out.println("Full Match for Expression 3: " + matcher_3.group(0));
}
}
}
Full Match for Expression 1: AAA123
ABCDEFGH123
XXXX123
Full Match for Expression 2: AAA123
ABCDEFGH123
XXXX123
Full Match for Expression 3: AAA123
ABCDEFGH123
XXXX123
यदि आप अभिव्यक्ति की खोज करना चाहते हैं, तो इसे regex101.com के शीर्ष दाएं पैनल पर समझाया गया है । यदि आप चाहें, तो आप इस लिंक में भी देख सकते हैं कि यह कुछ नमूना इनपुटों के साथ कैसे मेल खाता है।
jex.im नियमित अभिव्यक्ति की कल्पना करता है:
(\W|\w)*डबल भागने के बजाय पसंद है
उदाहरण समस्या का विशिष्ट समाधान: -
प्रयास करें [A-Z]*123$की भरपाई कर देंगे 123, AAA123, ASDFRRF123। मामले में आपको 123उपयोग करने से पहले कम से कम एक चरित्र की आवश्यकता होती है[A-Z]+123$ ।
प्रश्न का सामान्य हल (नियमित अभिव्यक्ति में "किसी भी वर्ण" से कैसे मिलान करें):
[\w|\W]{min_char_to_match,} ।[\S]{min_char_to_match,}।[^]न्यूलाइन सहित किसी भी वर्ण से मेल खाना चाहिए। [^CHARS] में उन लोगों को छोड़कर सभी से मेल खाता है CHARS । यदि CHARS रिक्त है, तो यह सभी वर्णों से मेल खाता है।
जावास्क्रिप्ट उदाहरण:
/a[^]*Z/.test("abcxyz \0\r\n\t012789ABCXYZ") // Returns ‘true’.
मैं यह काम करता हूँ हमेशा नहीं डॉट का मतलब है कोई चार। एकल लाइन मोड जब अपवाद। \p{all}होना चाहिए
String value = "|°¬<>!\"#$%&/()=?'\\¡¿/*-+_@[]^^{}";
String expression = "[a-zA-Z0-9\\p{all}]{0,50}";
if(value.matches(expression)){
System.out.println("true");
} else {
System.out.println("false");
}