ตัวแปร$/
อ้างถึงการจับคู่ล่าสุดในขณะที่ตัวแปร$¢
อ้างถึงการจับคู่นอกสุดล่าสุด ใน 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
ด้วย$¢
ล้มเหลว คุณเข้าใจประเด็นของฉันในคำตอบนั้นหรือไม่? คุณสามารถทำให้มันใช้งานได้?