我想解析一些字符串输入,但我很努力地看到解决方案。但是,这必须是一个众所周知的模式 - 这只是我不经常遇到的模式。解析字符串输入的关键字后跟内容
背景:我有字符串的关键字的短列表(“头”,“GET”,“POST”,“PUT”)其中的每一个随后附加字符串数据。可以有任意顺序的多个顺序(“KEYWORD等等等等等等等)”。 XML没有终止字符或结束关键字 - 可能是关键字子句出现或输入结束。示例:
str: {HEAD stuff here GET more stuff here POST other stuff here GET even more stuff here PUT still more stuff here POST random stuff}
我想输出来实现:
results: [
"HEAD" ["stuff here"]
"GET" ["more stuff here" "even more stuff here"]
"POST" ["other stuff here" "random stuff"]
"PUT" ["still more stuff here"]
]
我这个可怜的尝试是:
results: ["head" [] "get" [] "post" [] "put" []]
rule1: ["HEAD" (r: "head") | "GET" (r: "get") | "POST" (r: "post") | "PUT" (r: "put")]
rule2: [to "HEAD" | to "GET" | to "POST" | to "PUT" | to end]
parse/all str [
some [
start: rule1 rule2 ending:
(offs: offset? start ending
append select results r trim copy/part start offs
) :ending
| skip]
]
我知道规则-2是clunker-- “to”运算符的使用不是考虑这种模式的正确方法;当我想它找到任何关键字它跳过到规则块中的第一个可用关键字的下一个occurrance。
任何提示将不胜感激。
感谢 - 这去draegtun和sqlab - 我意识到,一个简单的作弊是对我来说,我自己的终结者添加到输入,但我很感激看到更多的语法分析适当的方法。 – Edoc