दिलचस्प पोस्ट
एंड्रॉइड अलार्म मैनेजर के जरिये कई अलार्म सेट करने के तरीके पायथन: बाइंडिंग सॉकेट: "पता पहले से उपयोग में है" एक एएसपी.नेट वेबमैथ ​​के लिए jQuery AJAX कॉल : नहीं () चयनकर्ता सफारी और क्रोम / फ़ायरफ़ॉक्स के बीच समान व्यवहार नहीं करता है जेसन। नेट में निजी सेटर्स QtCore.QObject.Connect एक लूप में केवल पिछले उदाहरण को प्रभावित करता है वहाँ एक अच्छा jQuery खींचें और ड्रॉप फ़ाइल अपलोड प्लगइन है? क्या मुझे / एमडी या / एमटी के साथ संकलित करना चाहिए? जावा और .NET स्ट्रिंग literals कहाँ रहते हैं? Java.time.clock.systemDefaultZone () के बीच कोई अंतर। GetZone () बनाम java.util.TimeZone.getDefault ()। ToZoneId ()? Kerberos / Spring सुरक्षा / IE / सक्रिय निर्देशिका के साथ "दोषपूर्ण टोकन का पता चला" त्रुटि (NTLM नहीं कर्बोस) EXISTS बनाम जोड़ और मौजूदा खंड का उपयोग एक एस्प बटन पर पोस्टबैक अक्षम कैसे करें एक्सटेंशन विधि और गतिशील ऑब्जेक्ट NSAutoreleasePool autorelease पूल कैसे काम करता है?

Regex का उपयोग कर एक सबस्ट्रिंग निकालने का तरीका

मेरे पास एक स्ट्रिंग है जिसमें इसमें दो एकल उद्धरण हैं, ' चरित्र ' सिंगल कोट्स के बीच में मैं चाहता हूं कि डेटा है

मैं निम्नलिखित पाठ से "मुझे जो डेटा चाहता हूं" निकालने के लिए एक regex लिख सकता हूं?

 mydata = "some string with 'the data i want' inside"; 

वेब के समाधान से एकत्रित समाधान "Regex का उपयोग कर एक सबस्ट्रिंग निकालने का तरीका"

यह मानते हुए कि आप सिंगल उद्धरणों के बीच भाग चाहते हैं, एक Matcher साथ इस नियमित अभिव्यक्ति का उपयोग करें:

 "'(.*?)'" 

उदाहरण:

 String mydata = "some string with 'the data i want' inside"; Pattern pattern = Pattern.compile("'(.*?)'"); Matcher matcher = pattern.matcher(mydata); if (matcher.find()) { System.out.println(matcher.group(1)); } 

परिणाम:

 मैं चाहता हूँ कि डेटा

आपको इसके लिए रीजेक्स की ज़रूरत नहीं है।

अपैप कॉमन्स को अपनी प्रोजेक्ट में जोड़ें ( http://commons.apache.org/proper/commons-lang/ ), फिर उपयोग करें:

 String dataYouWant = StringUtils.substringBetween(mydata, "'"); 
 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { Pattern pattern = Pattern.compile(".*'([^']*)'.*"); String mydata = "some string with 'the data i want' inside"; Matcher matcher = pattern.matcher(mydata); if(matcher.matches()) { System.out.println(matcher.group(1)); } } } 

क्योंकि आपने स्काला को भी हटाया है, बिना कई रेगएक्स के एक समाधान जो आसानी से कई उद्धृत तारों से संबंधित है:

 val text = "some string with 'the data i want' inside 'and even more data'" text.split("'").zipWithIndex.filter(_._2 % 2 != 0).map(_._1) res: Array[java.lang.String] = Array(the data i want, and even more data) 

जावास्क्रिप्ट के रूप में:

 mydata.match(/'([^']+)'/)[1] 

वास्तविक regexp है: /'([^']+)'/

यदि आप गैर लालची संशोधक (किसी अन्य पोस्ट के अनुसार) का उपयोग करते हैं तो यह ऐसा ही होता है:

 mydata.match(/'(.*?)'/)[1] 

यह क्लीनर है

इसके लिए एक सरल एक-लाइनर है:

 String target = myData.replaceAll("[^']*(?:'(.*?)')?.*", "$1"); 

मेलिंग समूह को वैकल्पिक बनाकर, यह उस मामले में रिक्त स्थान पर लौटाए गए उद्धरण चिह्नों के लिए भी पूरा करता है।

लाइव डेमो देखें

स्काला में,

 val ticks = "'([^']*)'".r ticks findFirstIn mydata match { case Some(ticks(inside)) => println(inside) case _ => println("nothing") } for (ticks(inside) <- ticks findAllIn mydata) println(inside) // multiple matches val Some(ticks(inside)) = ticks findFirstIn mydata // may throw exception val ticks = ".*'([^']*)'.*".r val ticks(inside) = mydata // safe, shorter, only gets the first set of ticks 

String dataIWant = mydata.split("'")[1];

लाइव डेमो देखें

 String dataIWant = mydata.replaceFirst(".*'(.*?)'.*", "$1");