2011-09-09 21 views
14

मैं इस पाठ है और मैंरेगुलर एक्सप्रेशन से कैसे दो तार

begin 
text 
end 

begin 
text 
end 

begin 
text 
end 

शुरू और अंत के बीच पाठ कैप्चर करना चाहते हैं के बीच पाठ खोजने के लिए।

/begin.*end/ 

यह पहली शुरुआत और अंतिम अंत को कैप्चर करेगा।

उत्तर

12

यह आलसी करें - /begin.*?end/

Sidenote: से कम नहीं स्वीकार्य है "सुस्त" "गैर लालची" है। Example, example, example

+7

शब्द है "गैर लालची" ("सुस्त" नहीं) – Bohemian

4

अपने पाठ शामिल लाइन फ़ीड (\n या \r) आप अपने रेगुलर एक्सप्रेशन से करने के लिए ध्वज "dotall", और साथ ही अपने मैच कर जोड़ने की आवश्यकता होगी तो अनिच्छुक (यानी "गैर लालची")

अपने regex स्वाद पर निर्भर करता है:

/begin.*?end/s 
(?s)begin.*?end 
+0

js संस्करण; '/ start। *? end/s' [regex101 में काम नहीं करता है] (https://regex101.com/r/HzsPk7/1) जबकि [पायथन संस्करण] (https://regex101.com/r/zsq4IQ/1) करता है। मैंने श्वेत स्कैप किए गए '\ s' की कोशिश की लेकिन कोई मिलान नहीं हुआ। – Mikel

+0

@ निश्चित रूप से माइक '/ start। *? End/s' regex 101 में काम नहीं करता है, क्योंकि आगे की स्लेश रेगेक्स का हिस्सा नहीं हैं। वे जेएस में delimiters हैं, लेकिन लोग अक्सर उन्हें जेएस से संबंधित regex उत्तरों में शामिल करते हैं क्योंकि इस तरह आप उन्हें कोड (यानी उद्धरण के बजाय slashes, और झटके से भी regex भी सीमित के बाद ध्वज)। यह उत्तर में कोट्स के साथ गैर जेएस संस्करण को कोड करने जैसा है, जैसे '' (? एस) शुरू होता है। *? अंत "' (जो लोग कभी-कभी भी करते हैं)। – Bohemian

+0

मैं इसे ['शुरू [\ s \ S] *? End'] (https://regex101.com/r/5wLcgR/2) के साथ करने में सक्षम था – Mikel

संबंधित मुद्दे