एलिस रीजेक्सप्स ^ और $ बनाम `और '


16

मैनुअल regexp विशेष वर्णों का वर्णन करता है ^और $। मुझे पता है कि सबसे नियमित अभिव्यक्ति बोलियों की तरह, वे एक स्ट्रिंग की शुरुआत या अंत से मेल खाते हैं। हालाँकि, मुझे यह भी पता चला है कि वहाँ `और 'पात्र उपलब्ध हैं। यहां मिले स्पष्टीकरण के आधार पर , वे तारों के प्रारंभ या अंत से मेल खाते हैं। क्या कोई कृपया इन विशेष वर्णों के बीच के अंतर को समझा सकता है, उदाहरण और अनुशंसा के साथ कि उनका उपयोग कब किया जाए?

जब मैं के मूल्य को देखता हूं auto-mode-alist, तो वे तार के अंत से मेल खाने के लिए परस्पर उपयोग होने लगते हैं:

(...
 ("\\.scss\\'" . scss-mode)
 ("\\.ya?ml$" . yaml-mode)
...)

2
जब लोग इस $तरह का उपयोग करते हैं, तो वे उन फिल्म्स पर बैंकिंग करते हैं जिनमें न्यूलाइन्स नहीं होती हैं। यह आमतौर पर एक (बहुत) सुरक्षित धारणा होने जा रही है, लेकिन इसकी गारंटी नहीं है । \\'इसलिए प्रयोग करना सबसे अच्छा अभ्यास है।
फिल्स

जवाबों:


14

आपके स्ट्रिंग में एक एम्बेडेड न्यूलाइन वर्ण हो सकता है, जिसमें केस \'स्ट्रिंग के अंत से $मेल खाता है लेकिन न्यूलाइन चार्ट से ठीक पहले मेल खाता है।

Elisp मैनुअल को उद्धृत करने के लिए, नोड Regexp विशेष :

जब बफर के बजाय एक स्ट्रिंग का मिलान किया जाता है, तो स्ट्रिंग के अंत में या एक नई लाइन वर्ण से पहले `$ 'मेल खाता है।

इसी तरह, \`स्ट्रिंग की शुरुआत से ^मेल खाता है , लेकिन न्यूलाइन चार के बाद मेल खाता है। फिर से, मैनुअल:

जब एक बफर के बजाय एक स्ट्रिंग का मिलान किया जाता है, तो `^ 'स्ट्रिंग की शुरुआत में या एक न्यूलाइन वर्ण के बाद मेल खाता है।

इसलिए तार के लिए आप आम तौर पर उपयोग करना चाहते हैं \`और \', खासकर अगर आपका कोड समय से पहले नहीं जान सकता है कि क्या स्ट्रिंग में न्यूलाइन चार्ट हो सकते हैं। एक बफर में पाठ के लिए आप आमतौर पर उपयोग करते हैं ^और $


6
(string-match "^foo" "foo")         ; => 0
(string-match "\\`foo" "foo")       ; => 0
(string-match "^foo" "bar\nfoo")    ; => 4
(string-match "\\`foo" "bar\nfoo")  ; => nil

(string-match "foo$" "foo")         ; => 0
(string-match "foo\\'" "foo")       ; => 0
(string-match "foo$" "foo\nbar")    ; => 0
(string-match "foo\\'" "foo\nbar")  ; => nil

^और लाइनों$ के प्रारंभ और अंत का मिलान करें ।

\`और पूरे स्ट्रिंग\' की शुरुआत और अंत का मिलान करें ।


2
there are ` and ' characters available. [...] they seem to also match the start or end of strings

विशेष वर्ण हैं: . * + ? ^ $ \ [

कोष्ठक के बीच [], निम्नलिखित विशेष भी हैं:] - ^

बैकटिक `और एकल उद्धरण 'सहित कई पात्र, बैकस्लैश का पालन करते समय विशेष बन जाते हैं। अधिक जानकारी के लिए यहां देखें ।

Could someone please explain the difference between these special characters, with an example and recommendation on when to use them?

beginning of stringऔर, के बीच अंतर है beginning of each line in the string

एर्गोमेक्स के सौजन्य से। आप यहां और पढ़ सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.