चर $/
सबसे हाल के मैच को $¢
संदर्भित करता है जबकि चर सबसे हाल के सबसे बाहरी मैच को संदर्भित करता है। उपर्युक्त की तरह अधिकांश मूल रीजैक्स में, यह एक और एक ही हो सकता है। लेकिन जैसा कि .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>
foo
bar
$<bar>
$/<bar>
foo
$/
और$¢
गुंजाइश है के बीच की व्याख्या की : उत्तरार्द्ध में केवल रेगेक्स के अंदर एक मूल्य है" का मतलब$¢
केवल एक वैस्टर्नियल ट्रेस था, जैसा किCursor
है। जब मैं आपका उत्तर पढ़ता हूं तो मुझे लगता है कि$¢
क्या$*TOP
मैं संभावित सुधार में बना होगा? SO को मेरे उत्तर की धारा "क्यों / कैसे एक अतिरिक्त चर कैप्चर समूहों के साथ दोहराया मध्यस्थ चरित्र में मिलान की जरूरत है?"। लेकिन मेरे प्रयास को बदलने के लिए$*TOP
साथ$¢
में विफल रहा है। क्या आपको उस उत्तर में मेरी बात समझ में आई? क्या आप इसे काम कर सकते हैं?