【发布时间】:2012-03-15 22:26:32
【问题描述】:
给定一个正则表达式:
/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}$/
【问题讨论】:
-
感谢您的关注 - 我已经把问题说得更清楚了(我希望如此)。
-
我不明白为什么这被否决或被投票关闭。对于 OP,您可能只想调查现有的正则表达式引擎,或者看看是否有办法查看现有引擎(IIRC 主要是 C)。
-
谢谢戴夫。我在 C 中不是特别舒服!而且我不确定为什么这会被否决。也许人们没有意识到这个问题不仅仅是简单的字符串处理。