Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用treetop解析包含空格和转义符号的目录路径?_Ruby_Regex_Parsing_Grammar_Treetop - Fatal编程技术网

Ruby 如何使用treetop解析包含空格和转义符号的目录路径?

Ruby 如何使用treetop解析包含空格和转义符号的目录路径?,ruby,regex,parsing,grammar,treetop,Ruby,Regex,Parsing,Grammar,Treetop,我需要解析一些包含目录路径的字符串。问题是,包含转义空格和其他转义符号。例如: "/dir_1/dir_2/dir_3/dir/another/dest_dir\ P\&G/" 请注意,p\&G/前面有一个空格 这是我的树梢语法(alpha_digit_special在开头包含空格) 解析此字符串后,我得到nil。那么,如何指定规则,使字符串可能包含转义的空格呢?您是否尝试过\s test = "dest_dir P&G" test.match(/[a-zA-Z0-9_\s\

我需要解析一些包含目录路径的字符串。问题是,包含转义空格和其他转义符号。例如:

"/dir_1/dir_2/dir_3/dir/another/dest_dir\ P\&G/"
请注意,
p\&G/
前面有一个空格

这是我的树梢语法(alpha_digit_special在开头包含空格)


解析此字符串后,我得到
nil
。那么,如何指定规则,使字符串可能包含转义的空格呢?

您是否尝试过
\s

test = "dest_dir P&G" 
test.match(/[a-zA-Z0-9_\s\&]+/)
 => #<MatchData "dest_dir P&G">
test=“dest\u dir宝洁”
测试匹配(/[a-zA-Z0-9\&]+/)
=> #

不能使用alpha\u digit\u special*处理反斜杠转义空格。 相反,必须使用重复的字符单位,其中字符单位可以是反斜杠字符对,也可以是单个非反斜杠字符。像这样的方法应该会奏效:

rule alpha_digit_special
  [a-zA-Z0-9.+&\\]
end

rule path_character
  '\\' (alpha_digit_special / ' ')
  /
  alpha_digit_special
end

rule path_without_quotes
  ([/] path_character* )+ 
end

请注意,上面的内容不接受反斜杠字符(这不是空格,也不在字母数字特殊集合中)。我想你可以看看如何改变这种状况。

是的。我已经试过了。问题是没有正确找到语法节点。规则捕获了最近额外的空格,但是。。。您试图将路径解析为什么?您是否正在尝试根据
'/'
拆分它们?你想要的最终结果是什么?
rule alpha_digit_special
  [a-zA-Z0-9.+&\\]
end

rule path_character
  '\\' (alpha_digit_special / ' ')
  /
  alpha_digit_special
end

rule path_without_quotes
  ([/] path_character* )+ 
end