如何使用树梢匹配一对/
个字符之间的所有内容?我还想匹配转义的/
字符。例如,如果我要解析“正则表达式”:
/blarg: dup\/md5 [0-9a-zA-Z]{32}/
结果将返回:
blarg: dup\/md5 [0-9a-zA-Z]{32}
答案 0 :(得分:0)
这应匹配两个/
字符内的所有内容,包括转义斜杠。我正在使用Ruby的DATA
__END__
功能,以便所有内容都可以在一个文件中运行。
另请注意,您可以标记已解析表达式的部分内容,然后将其用作函数。在下面的示例中,我标记了inside
。这也可以作为elements[1]
访问,而不是被标记。
这类似于matching a string,您可以在树顶文档中找到它。
require 'treetop'
Treetop.load_from_string DATA.read
parser = RegexParser.new
puts parser.parse('/blarg: dup\/md5 [0-9a-zA-Z]{32}/').inside.text_value
# => blarg: dup\/md5 [0-9a-zA-Z]{32}
__END__
grammar Regex
rule regex
'/' inside:('\/' / !'/' .)* '/'
end
end