`a` is a String that always match to these regexp because `ExplicitLink:a` is created by `"{#{l}}[#{s}]"`. Perhaps it could be more simple if `ExplicitLink` returns structured data ```diff ExplicitLink = Label:l "(" @Sp Source:s Spnl Title @Sp ")" - { "{#{l}}[#{s}]" } # returns string, need to parse this string again... + { { label: l, source: s } } # can return hash ``` (need to change `Link = ExplicitLink | ReferenceLink | AutoLink` to return a string if ExplicitLink returns hash) _Originally posted by @tompng in https://github.com/ruby/rdoc/pull/1320#discussion_r2005477786_