2011-03-09 19 views
8

मिलान करने के लिए निम्नलिखित:रूबी में नियमित अभिव्यक्ति का हिस्सा कैसे बना सकता हूं?

On Mar 3, 2011 11:05 AM, "mr person" 
wrote: 

मैं निम्नलिखित नियमित अभिव्यक्ति है:

/(On.* (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{1,2}, [12]\d{3}.* at \d{1,2}:\d{1,2} (?:AM|PM),.*wrote:)/m 

वहाँ वैकल्पिक पर बनाने के लिए एक तरीका है? तो अगर यह बहुत अच्छा है, यदि नहीं, तो यह अभी भी मेल खाता है?

+1

+1 -1 को अस्वीकार कर रहा है, मुझे नहीं लगता कि इसका अधिकार सब कुछ है, क्षमा करें ... – sln

+0

@ एसएलएन: क्या आपका मतलब "नकारात्मक" था? इसके अलावा, आपको लगता है कि डाउनवोट अन्यायपूर्ण क्यों है? –

उत्तर

11

निश्चित रूप से। इसे कोष्ठक में रखें, उसके बाद एक प्रश्न चिह्न डालें। रिक्त स्थानों में से एक को शामिल करें (अन्यथा यदि आप "एट" गायब हैं तो आप दो रिक्त स्थान से मिलान करने की कोशिश करेंगे।) (at)? (या किसी और ने सुझाव दिया है, (?:at)? इसे कैप्चर करने से बचने के लिए)।

+0

ने कोशिश की, यह – AnApprentice

+0

काम नहीं करता है ओह प्रतीक्षा करें क्योंकि मेरे पास एक जगह थी। धन्यवाद – AnApprentice

+0

आपको वहां एक जगह भी शामिल करने की आवश्यकता होगी, अन्यथा यह दो रिक्त स्थान से मेल खाने का प्रयास करेगा। मैं संपादित करूंगा। – kindall

10

(?:) मत भूलना यकीन है कि कोष्ठकों के भीतर अभिव्यक्ति पर कब्जा कर लिया नहीं हो जाता है

(?:at)? 
+0

यह जटिल अभिव्यक्तियों के लिए भी काम करता है उदा।/(\ W + (\ [\ w + \] (: \ [\ d + \])) +?) (: \ [\ W + \]) /; – Donato

+0

मैं कभी नहीं जानता था कि जब मैं वैकल्पिक वस्तुओं के लिए माता-पिता का उपयोग करता हूं, तो इसे कैद नहीं किया जाए, धन्यवाद! –

1

ज़रूर, तुम सिर्फ समूह वैकल्पिक हिस्सा करने की जरूरत है ...

(at)* 

और, ठीक करने के लिए , मुझे लगता है कि पर पर मैच होगा, तो आप शायद यह करना चाहें:

(at)? 
+0

यह '' 'होना चाहिए, न कि' * '। संपादन के लिए –

+0

+1! –

2

दूसरों को आपका जवाब मिला। यह सिर्फ एक तरफ है: नियमित अभिव्यक्तियां।

जब आप नियमित अभिव्यक्तियों में "शर्तों" कहते हैं, तो यह रेगेक्स भाषा को संदर्भित करता है। किसी भी भाषा की तरह, यह कोड निष्पादन में एक शाखा है, लेकिन कोड एक नियमित नियमित अभिव्यक्ति पथ है, नियमित अभिव्यक्तियों का "कोड"।

तो psudo कोड में: यदि (मूल्यांकन सत्य है) यह नियमित उप-अभिव्यक्ति करें, अन्यथा यह अन्य उप-अभिव्यक्ति करें।

यह सशर्त उन्नत नियमित अभिव्यक्ति इंजनों में मौजूद है ... पर्ल।
पर्ल सबसे उन्नत नियमित अभिव्यक्ति इंजन का उपयोग करता है जो मौजूद है। संस्करण 6 में और उससे परे भाषा का एक अभिन्न अंग होगा, जहां कोड और अभिव्यक्ति सहजता से मिलती है।

पर्ल 5.10 में यह निर्माण है:
(? (हालत) हाँ-पैटर्न | नो-पैटर्न)।

संपादित करें बस एक चेतावनी है कि जहां पर्ल जाता है, हर दूसरी भाषा नियमित अभिव्यक्ति के रूप में पालन करती है।

+0

+1। मैं आगे बढ़ गया और इसके बजाय "वैकल्पिक" का उपयोग करने के लिए सवाल संपादित किया। –

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