-3

如何将一对/字符与树顶之间的所有内容匹配?我也想匹配转义/字符。例如,如果我要解析“正则表达式”:

/blarg: dup\/md5 [0-9a-zA-Z]{32}/

结果将返回:

blarg: dup\/md5 [0-9a-zA-Z]{32}
4

1 回答 1

0

这应该匹配两个/字符内的所有内容,包括转义的斜杠。我正在使用 Ruby 的DATA __END__功能,以便所有内容都可以在单个文件中运行。

另外,请注意,您可以标记已解析表达式的某些部分,然后将它们用作函数。在下面的示例中,我标记了inside. 这也可以被访问elements[1]而不是被标记。

这类似于匹配您可以在树顶文档中找到的字符串。

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
于 2014-06-03T14:37:38.347 回答