ตัวแปร$/อ้างถึงการจับคู่ล่าสุดในขณะที่ตัวแปร$¢อ้างถึงการจับคู่นอกสุดล่าสุด ใน regexes พื้นฐานส่วนใหญ่เช่นข้างต้นที่อาจเป็นหนึ่งเดียวกัน แต่ตามที่เห็นได้จากผลลัพธ์ของ.rakuวิธีการMatchวัตถุสามารถมีMatchวัตถุอื่น ๆ(นั่นคือสิ่งที่คุณได้รับเมื่อคุณใช้$<foo>หรือ$1สำหรับการจับ)
สมมติว่าเรามี regex ต่อไปนี้พร้อมการจับภาพเชิงปริมาณ
/ 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]ที่สอง ฯลฯ
ภายในบล็อกรหัส regex $/จะอ้างอิงการจับคู่ที่ใกล้เคียงที่สุด ในกรณีข้างต้นนั่นคือการจับคู่สำหรับภายใน( )และไม่ทราบเกี่ยวกับการแข่งขันอื่น ๆ หรือการเริ่มต้นของการจับคู่เดิม: เพียงเริ่มต้นสำหรับ( )บล็อก ดังนั้นให้ regex ที่ซับซ้อนมากขึ้น:
/ a $<foo>=(b $<bar>=(c)+ )+ d /
เราสามารถเข้าถึงที่จุดใด ๆ ที่ใช้ $ ¢ทั้งหมดของราชสกุลโดยกล่าวว่าfoo $¢<foo>เราสามารถเข้าถึงbarสัญญาณของความที่กำหนดโดยใช้foo $¢<foo>[0]<bar>หากเราแทรกบล็อครหัสในการfooจับภาพของมันจะสามารถเข้าถึงbarโทเค็นโดยใช้$<bar>หรือ$/<bar>แต่มันจะไม่สามารถเข้าถึงโทเค็นอื่น ๆfooได้
$/และ$¢ขอบเขต: หลังเท่านั้นมีค่าภายใน regex ว่า" เพื่อหมายถึง$¢เป็นเพียงการติดตามร่องรอยเช่นเดียวกับที่Cursorเป็น เมื่อฉันอ่านคำตอบของคุณฉันคิดว่าฉัน$¢จะเป็นคนที่$*TOPสร้างขึ้นในการปรับปรุงที่เป็นไปได้หรือไม่? ในส่วนของคำตอบของฉันต่อ "ดังนั้นทำไมจึงต้องมีตัวแปรเพิ่มเติมในการจับคู่อักขระ Arbitary ซ้ำกับกลุ่มการจับภาพ" แต่ความพยายามของฉันที่จะแทนที่$*TOPด้วย$¢ล้มเหลว คุณเข้าใจประเด็นของฉันในคำตอบนั้นหรือไม่? คุณสามารถทำให้มันใช้งานได้?