उदाहरण: "यह सिर्फ साधारण वाक्य है।"
मैं "यह है" और "वाक्य" के बीच हर चरित्र का मिलान करना चाहता हूं। लाइन ब्रेक की अनदेखी की जानी चाहिए। मैं सही सिंटैक्स का पता नहीं लगा सकता।
उदाहरण: "यह सिर्फ साधारण वाक्य है।"
मैं "यह है" और "वाक्य" के बीच हर चरित्र का मिलान करना चाहता हूं। लाइन ब्रेक की अनदेखी की जानी चाहिए। मैं सही सिंटैक्स का पता नहीं लगा सकता।
जवाबों:
उदाहरण के लिए
(?<=This is)(.*)(?=sentence)
मैंने खोजबीन का उपयोग किया (?<=)और आगे देखा (?=)ताकि "यह" और "वाक्य" मैच में शामिल न हो, लेकिन यह आपके उपयोग के मामले पर निर्भर है, आप बस लिख भी सकते हैं This is(.*)sentence।
यहां महत्वपूर्ण बात यह है कि आप अपने रेगेक्स इंजन के "डॉटॉल" मोड को सक्रिय करते हैं, जिससे कि .नई लाइन मेल कर रही है। लेकिन आप यह कैसे करते हैं यह आपके रेगेक्स इंजन पर निर्भर करता है।
अगली बात यह है कि यदि आप उपयोग करते हैं .*या .*?। पहला व्यक्ति लालची है और आपकी स्ट्रिंग में अंतिम "वाक्य" तक मेल करेगा, दूसरा एक आलसी है और आपकी स्ट्रिंग में अगले "वाक्य" तक मेल खाएगा।
अपडेट करें
This is(?s)(.*)sentence
जहां (? S) डॉटलाइन संशोधक को चालू करता है, जिससे .मिलान को नईलाइन वर्ण बनाता है ।
अपडेट 2:
(?<=is \()(.*?)(?=\s*\))
आपके उदाहरण का मिलान कर रहा है "यह एक सरल वाक्य है"। Regexr पर यहाँ देखें
This is(?s)(.*)sentenceकाम कर रहा हूं ?
इस प्रश्न को पुनर्जीवित करना क्योंकि स्वीकृत उत्तर में रेगेक्स मेरे लिए बिल्कुल सही नहीं लगता है। क्यों? चूंकि
(?<=This is)(.*)(?=sentence)
से मेल खाएगी my first sentence. This is my secondमेंThis is my first sentence. This is my second sentence.
आपको दो लुकरॉइड के बीच एक आलसी क्वांटिफायर की आवश्यकता है। जोड़ने ?से तारा आलसी हो जाता है।
यह आप क्या चाहते हैं से मेल खाता है:
(?<=This is).*?(?=sentence)
डेमो देखें । मैंने कैप्चर ग्रुप को हटा दिया, जिसकी जरूरत नहीं थी।
रेखा के पार की रेखाओं का मिलान करने के लिए डॉटाल मोड
ध्यान दें कि डेमो में "डॉट मैच लाइन ब्रेक मोड" (उर्फ) डॉट-ऑल सेट है (देखें कि विभिन्न भाषाओं में डॉटाल कैसे चालू करें )। कई रेगेक्स फ्लेवर्स में, आप इसे ऑनलाइन मोडिफ़ायर के साथ सेट कर सकते हैं (?s):
(?s)(?<=This is).*?(?=sentence)
संदर्भ
.*और .*?"अपडेट" से पहले पैराग्राफ) के बीच का अंतर भी समझाया गया है। इसलिए मुझे नहीं लगता कि मेरा जवाब गलत है।
is incorrectदिया doesn't seem quite correct to me... आशा है कि यह आपको चिकोटी नहीं देता है, शायद इस तरह के उच्च-यातायात उत्तर के लिए regex क्या होना चाहिए, इसके बारे में बस एक धारणा है।
कोशिश करो This is[\s\S]*sentence, जावास्क्रिप्ट में काम करता है
[\s\S]*?(यह भी कहा जाता है: गैर लालची वाइल्डकार्ड)
इस:
This is (.*?) sentence
जावास्क्रिप्ट में काम करता है।
इसे इस्तेमाल करो: (?<=beginningstringname)(.*\n?)(?=endstringname)
endstringname
मामले में कोई भी जेनकींस के संदर्भ में इसका एक उदाहरण ढूंढ रहा है। यह build.log को पार्स करता है और यदि यह एक मैच पाता है तो यह मैच के साथ बिल्ड को विफल करता है।
import java.util.regex.Matcher;
import java.util.regex.Pattern;
node{
stage("parse"){
def file = readFile 'build.log'
def regex = ~"(?s)(firstStringToUse(.*)secondStringToUse)"
Matcher match = regex.matcher(file)
match.find() {
capturedText = match.group(1)
error(capturedText)
}
}
}
आप बस इसका उपयोग कर सकते हैं: \This is .*? \sentence
उदात्त पाठ में, आप बस दो शब्दों को लिखते हैं जिन्हें आप अपने मामले में उदाहरण के लिए रखने में रुचि रखते हैं
"यह" और "वाक्य" है
और आप लिखते हैं
अर्थात This is .* sentence
और यह आपको अच्छा करना चाहिए
यहाँ बताया गया है कि मैंने यह कैसे किया:
यह मेरे लिए आसान था कि मैं विशिष्ट रेगेक्स को जानने की कोशिश करूं ।
int indexPictureData = result.IndexOf("-PictureData:");
int indexIdentity = result.IndexOf("-Identity:");
string returnValue = result.Remove(indexPictureData + 13);
returnValue = returnValue + " [bytecoderemoved] " + result.Remove(0, indexIdentity); `
मैं प्रिंट "स्ट्रिंग" के बीच इस प्रिंट सिंटैक्स को परिवर्तित करने के लिए रेगेक्स के लिए अपनी खोज पर यहां आया, Python2 में पुरानी स्क्रिप्ट में: प्रिंट ("स्ट्रिंग"), Python3 के लिए। अच्छी तरह से काम करता है, अन्यथा अतिरिक्त रूपांतरण के लिए 2to3.py का उपयोग करें। यहाँ दूसरों के लिए मेरा समाधान है:
इसे Regexr.com पर आज़माएं (किसी कारण से NP ++ में काम नहीं करता है):
find: (?<=print)( ')(.*)(')
replace: ('$2')
चरों के लिए:
(?<=print)( )(.*)(\n)
('$2')\n
लेबल और चर के लिए:
(?<=print)( ')(.*)(',)(.*)(\n)
('$2',$4)\n
Python3 के लिए प्रिंट ("स्ट्रिंग") के साथ Python2 में सभी प्रिंट "स्ट्रिंग" को कैसे बदलें?
जावा दृष्टिकोण का उपयोग करके दो तारों के बीच सब कुछ मैच करने के लिए RegEx।
List<String> results = new ArrayList<>(); //For storing results
String example = "Code will save the world";
RegEx ( ?) * का उपयोग करने के लिए पैटर्न और मिलान वस्तुओं का उपयोग करते हैं ।
Pattern p = Pattern.compile("Code "(.*?)" world"); //java.util.regex.Pattern;
Matcher m = p.matcher(example); //java.util.regex.Matcher;
चूंकि मिलानकर्ता में एक से अधिक मैच हो सकते हैं, हमें परिणामों पर लूप करने और इसे स्टोर करने की आवश्यकता है।
while(m.find()){ //Loop through all matches
results.add(m.group()); //Get value and store in collection.
}
इस उदाहरण में केवल " शब्द शामिल होगा" शब्द को बचाएगा , लेकिन बड़े पाठ में संभवतः अधिक मैच मिलेंगे।