2011-05-13 9 views
13

मैं प्रपत्र की एक regexp है:रूबी में Regexp - क्या मैं समूहबद्ध किए बिना ब्रांड्स का उपयोग कर सकता हूं?

/(something complex and boring)?(something complex and interesting)/ 

मैं दूसरे कोष्ठक की सामग्री में दिलचस्पी रखता हूँ; पहले लोग केवल एक सही मैच सुनिश्चित करने के लिए हैं (क्योंकि उबाऊ भाग मौजूद हो सकता है या नहीं हो सकता है, लेकिन यदि यह है, तो मैं दिलचस्प भाग के लिए regexp के साथ दुर्घटना से मिलान करूंगा)।

तो मैं $ 2 का उपयोग कर दूसरे मैच तक पहुंच सकता हूं। हालांकि, अन्य regexps के साथ एकरूपता के लिए मैं उपयोग कर रहा हूँ मैं चाहता हूं कि किसी भी तरह $ 1 में दूसरे पेरेथेसिस की सामग्री होगी। क्या यह संभव है?

+0

सभी को धन्यवाद का उपयोग कर सकते हैं! –

उत्तर

18

उपयोग एक गैर पर कब्जा समूह);

वैसे, रूबी 1.9 में, आप /(something complex and boring)?(?<interesting>something complex and interesting)/ करते हैं और $~[:interesting] के साथ समूह का उपयोग कर सकते मैं अन्य regex स्वाद जानता हूँ। तो मुझे यकीन है कि आप एक गैर कैप्चरिंग समूह

/(?:something complex and boring)?(something complex and interesting)/ 

केवल एक कैप्चरिंग समूह नहीं है, जल्दी और शिक्षाप्रद जवाब के लिए इसलिए $ 1

HTH

-4

वास्तव में नहीं, नहीं। लेकिन आप इस तरह, एकरूपता के लिए एक नाम वाले समूह का उपयोग कर सकते हैं:

/(?<group1>something complex and boring)?(?<group2>something complex and interesting)/ 

आप नाम एकरूपता है कि आप हासिल करना चाहते हैं के लिए (कोण कोष्ठक में पाठ) बदल सकते हैं। इसके बाद आप इस जैसे समूहों पहुँच सकते हैं:

/(?:something complex and boring)?(something complex and interesting)/ 
2

हाँ, ?: सिंटैक्स का उपयोग करें। इसे प्राप्त करने के लिए /(?:something complex and boring)?(something complex and interesting)/ (?: पर ध्यान दें) का उपयोग करें।

r = /(?:ab)?(cd)/ 
9

यह एक गैर-माणिक regexp सुविधा है:

string.match(/(?<group1>something complex and boring)?(?<group2>something complex and interesting)/) do |m| 
    # Do something with the match, m['group'] can be used to access the group 
end 
1

मैं एक गहरे लाल रंग का डेवलपर लेकिन नहीं कर रहा हूँ:

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

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