चर $/सबसे हाल के मैच को $¢संदर्भित करता है जबकि चर सबसे हाल के सबसे बाहरी मैच को संदर्भित करता है। उपर्युक्त की तरह अधिकांश मूल रीजैक्स में, यह एक और एक ही हो सकता है। लेकिन जैसा कि .rakuविधि के आउटपुट से देखा जा सकता है , Matchवस्तुओं में अन्य Matchऑब्जेक्ट शामिल हो सकते हैं (यह वही है जो आपको तब मिलता है जब आप उपयोग करते हैं $<foo>या $1कैप्चर के लिए)।
मान लीजिए कि इसके बजाय हमारे पास मात्रात्मक कैप्चर के साथ निम्नलिखित रेगेक्स है
/ ab (cd { say $¢.from, " ", $¢.to } ) + /
और अगर यह "abcdcdcd" से मिलान करता है, तो यह निम्न आउटपुट को देखेगा:
0 2
0 4
0 6
लेकिन अगर हम उपयोग $¢करने से बदलते हैं $/, तो हमें एक अलग परिणाम मिलता है:
2 2
4 4
6 6
(कारण .toथोड़ा-सा बंद प्रतीत होता है कि यह है - और .pos- कैप्चर ब्लॉक के अंत तक अपडेट नहीं किया गया है।)
दूसरे शब्दों में, $¢होगा हमेशा क्या अपने अंतिम मैच वस्तु (यानी, हो जाएगा का उल्लेख $final = $text ~~ $regexके रूप में आप के बाद ऊपर के उदाहरण में समाप्त होने हैं पूरा मैच तो ताकि आप वास्तव में regex का एक जटिल कब्जा पेड़ के अंदर पार कर सकते हैं), तो आप सिर्फ सकता है ऐसा $¢[0]पहला मैच, का उल्लेख करने के $¢[1]दूसरे, आदि
रेगेक्स कोड ब्लॉक के अंदर, $/सबसे तात्कालिक मैच को संदर्भित करेगा। उपरोक्त मामले में, यह अंदर के लिए मैच है ( )और अन्य मैचों के बारे में नहीं पता होगा, न ही मिलान की मूल शुरुआत: ( )ब्लॉक के लिए बस शुरुआत । इसलिए अधिक जटिल रेगेक्स दें:
/ a $<foo>=(b $<bar>=(c)+ )+ d /
हम किसी भी बिंदु पर $ $ fooटोकन का उपयोग करके किसी भी बिंदु पर पहुंच सकते हैं $¢<foo>। हम उपयोग करके barदिए गए टोकन को एक्सेस कर सकते हैं । यदि हम कैप्चर के अंदर एक कोड ब्लॉक डालते हैं, तो यह टोकन का उपयोग करके या , लेकिन यह अन्य एस तक पहुंचने में सक्षम नहीं होगा ।foo$¢<foo>[0]<bar>foobar$<bar>$/<bar>foo
$/और$¢गुंजाइश है के बीच की व्याख्या की : उत्तरार्द्ध में केवल रेगेक्स के अंदर एक मूल्य है" का मतलब$¢केवल एक वैस्टर्नियल ट्रेस था, जैसा किCursorहै। जब मैं आपका उत्तर पढ़ता हूं तो मुझे लगता है कि$¢क्या$*TOPमैं संभावित सुधार में बना होगा? SO को मेरे उत्तर की धारा "क्यों / कैसे एक अतिरिक्त चर कैप्चर समूहों के साथ दोहराया मध्यस्थ चरित्र में मिलान की जरूरत है?"। लेकिन मेरे प्रयास को बदलने के लिए$*TOPसाथ$¢में विफल रहा है। क्या आपको उस उत्तर में मेरी बात समझ में आई? क्या आप इसे काम कर सकते हैं?