給定一個正則表達式:如何獲取正則表達式中的(可能嵌套的)捕獲組?
/say (hullo|goodbye) to my lovely (.*)/
和一個字符串:
"my $2 is happy that you said $1"
什麼是獲得一個包含正則表達式的捕獲組串正則表達式的最好方法?那就是:
/my (.*) is happy that you said (hullo|goodbye)/
顯然,我可以在原來的正則表達式的字符串表示使用正則表達式,但這將嵌套捕捉組可能存在困難。
我在使用Ruby。
class Regexp
def capture_groups
self.to_s[1..-2].scan(/\(.*?\)/)
end
end
regexp.capture_groups.each_with_index do |capture, idx|
string.gsub!("$#{idx+1}", capture)
end
/^#{string}$/
最終目標是什麼? – 2012-03-15 22:45:19
感謝您的期待 - 我已經提出了更清晰的問題(我希望)。 – 2012-03-15 23:05:05
我不明白爲什麼這是被拒絕或投票結束。對於OP,您可能只想調查現有的正則表達式引擎,或者查看是否有一種方法可以與現有的正則表達式匹配(IIRC主要是C)。 – 2012-03-16 16:29:22