2010-10-13 12 views
5

रूबी में दोनों भाव समान काम करने के लिए लग रहे हैं:के बीच/क्या अंतर है यह/और/ ईट जेड/

'it' =~ /^it$/ # 0 
'it' =~ /\Ait\Z/ # 0 
# but 
/^it$/ == /\Ait\Z/ # false 

तो मैं एक सोच क्या ^ बीच का अंतर है - \A और $ - \Z और किस प्रकार का चयन करना है इसका चयन कैसे करें?

+0

क्या आपके उदाहरण में कोई टाइपो नहीं है? '/ \ Ait \ Z /' होना चाहिए, है ना? –

+0

हां, वह प्रकार है। धन्यवाद। –

+0

@ सभी: आश्चर्य है कि मुझे कौन सा जवाब स्वीकार करना चाहिए क्योंकि वे सभी स्पष्ट हैं? मैं इसे कुछ दिनों में अप-वोटों की संख्या से कर दूंगा। –

उत्तर

10

अंतर केवल महत्वपूर्ण है स्ट्रिंग आप के खिलाफ मिलान कर रहे हैं शामिल कर सकते हैं जब नई लाइनें \A एक स्ट्रिंग की शुरुआत से मेल खाता है। ^ या तो एक स्ट्रिंग की शुरुआत या एक नई लाइन के तुरंत बाद मेल खाता है। इसी प्रकार \Z केवल स्ट्रिंग के अंत से मेल खाता है, लेकिन $ स्ट्रिंग के अंत या रेखा के अंत से मेल खाता है।

उदाहरण के लिए, नियमित अभिव्यक्ति /^world$/ "हैलो \ nworld" की दूसरी पंक्ति से मेल खाता है लेकिन अभिव्यक्ति /\Aworld\Z/ मिलान करने में विफल रहता है।

2

^ - लाइन की शुरुआत
\A - स्ट्रिंग की शुरुआत

$ - पंक्ति के अंत
\Z - स्ट्रिंग के अंत

5
regex इंजन है जो बहु-लाइन नियमित अभिव्यक्ति, ^ और $ आमतौर पर शुरू और लाइन मार्कर के अंत के लिए उपयोग किया जाता है का समर्थन में

\A और \Zस्ट्रिंग मार्करों की शुरुआत और अंत के लिए हैं।

उदाहरण के लिए

, स्ट्रिंग:

Hello, my names 
are Bob and James 

ames$ दो बार केवल एक बार से मेल खाते हैं, लेकिन ames\Z (नाम और जेम्स के लिए) (जेम्स के लिए)।