मैं बहुत यकीन है कि मैं देखा है "\R
के बावजूद कि वे कहाँ से आया है, Ruby2 में पेश किया गया था नई-पंक्तियों से मेल करने के: यूनिक्स \n
, MacOS \r
या विंडोज़ \r\n
" हूँ कहीं । उस ने कहा, रुबी 2 को \R
का इलाज करना चाहिए जैसे %r{\r\n|\r|\n}
।रूबी regex 'बैकस्लैश आर' उर्फ ' आर' पैटर्न
यह ठीक काम करता है:
▶ "a\nb".match /\R/
#⇒ #<MatchData "\n">
▶ "a\rb".match /\R/
#⇒ #<MatchData "\r">
▶ "a\r\nb".match /\R/
#⇒ #<MatchData "\r\n">
भी है कि क्या लाइन अंत/फ़ीड जोड़ दिया जाता है:
▶ "a\r\n\nb".match /\R{2}/
#⇒ #<MatchData "\r\n\n">
जब तक कि एक \R
नकारना की कोशिश करता है:
▶ "a\nb".match /[^\R]+/
#⇒ #<MatchData "a\nb">
negating \n
हालांकि ठीक काम करता है :
▶ "a\nb".match /[^\n]+/
#⇒ #<MatchData "a">
दुर्भाग्यवश, \R
Google के लिए बहुत कठिन है। न तो Regexp
rdoc और न ही Regular Expressions इसका उल्लेख है।
क्या कोई रेगेक्स गुरु यहां एक स्पष्टीकरण छोड़ देगा, ताकि कम से कम आसानी से गुग हो जाए?
अग्रिम धन्यवाद।
@ साहा के स्पष्टीकरण को पढ़ने के बाद, जो पूरी तरह से उचित लगता है, मैं सोच रहा हूं कि यह एक बग हो सकता है। ऐसा लगता है कि "एक \ nb" .match/[^ \ R] +/'आपको जिस तरह से अपेक्षित तरीके से काम करना चाहिए। मैंने एक ईमेल छोड़ दिया [के। Takata] (https://github.com/k-takata) पूछ रहा है कि वह आपके प्रश्न पर एक नज़र डालें। –
@CarySwoveland इसके लिए धन्यवाद। दूसरी तरफ, मुझे नहीं लगता कि परमाणु अभिव्यक्ति के संयोजन को आसानी से अस्वीकार किया जा सकता है। हमें बस गैर-अक्षर से स्क्वायर ब्रैकेट के अंदर सही व्यवहार की अपेक्षा नहीं करनी चाहिए, ठीक उसी तरह, जैसा कि हम चरित्र समूह के अंदर ठीक से कार्य करने के लिए पिछड़े संदर्भ (स्पष्ट रूप से लगभग उसी नोटेशन के साथ) की उम्मीद नहीं करते हैं। – mudasobwa