首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用LPeg re模块解析XML类型文件

用LPeg re模块解析XML类型文件
EN

Stack Overflow用户
提问于 2015-05-29 20:24:23
回答 1查看 219关注 0票数 2

我正在尝试学习LPeg的re module,这是一个非常有趣的体验,特别是因为官方文档是如此的好。

然而,有些话题似乎没有得到充分的解释。例如,named group capture构造:{:name: p :}

考虑下面的例子,我不明白为什么它不匹配:

代码语言:javascript
复制
print(re.compile
  [[item <- ('<' {:tag: %w+!%w :} '>' item+ '</' =tag '>') / %w+!%w]]
  :match[[<person><name>James</name><address>Earth</address></person>]])

-- outputs nil

有人能帮我弄清楚这里出了什么问题吗?我对此做了很多思考,似乎真的错过了一些重要的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-26 22:08:55

这是一个迟来的答案,但您可以尝试遵循以下模式

代码语言:javascript
复制
result = re.compile[[
  item <- ({| %s* '<' {:tag: %w+ :} %s* '>' (item / %s* { (!(%s* '<') .)+ }) %s* '</' =tag '>' |})+
]]:match[[
<person>
    <name>
    James
    </name>
    <address>Earth</address>
</person>
]]

,它使用表捕获来解析已剥离的元素文本的XML w/空格。

代码语言:javascript
复制
tag = "person"
[1] = {
  tag = "name"
  [1] = "James"
}
[2] = {
  tag = "address"
  [1] = "Earth"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30538449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档