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