在具有变量名称空间的两个标记之间查找文本

时间:2017-05-11 09:05:24

标签: regex

我必须解析许多文本文件,其中每个文本文件包含一个或多个XML文档。我知道每个XML都包含在一个Envelope标签中作为根标签,但它们具有不同的名称空间。 我试图创建一个正则表达式来从文本文件中获取这些XML文档,它确实适用于大多数文档,但对于某些人来说,我遇到了灾难性的回溯错误。我认为这是因为文本太大而且我的表达效率不高。我对正则表达式并不是很擅长,所以我很难解决这个问题。

我正在寻找的模式是: <namespace:envelope attributes>XML</namespace:envelope>

到目前为止,我想出的是: (?i)<[^:]*?:envelope[^>]*?>.*?<\/[^:]*?:envelope>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:-1)

尝试使用此正则表达式:

#<([^/].*?):envelope\s.+?</\1:envelope>#s

RegEx101 Demo 1

或者更短的,如果您不需要单独使用命名空间:

#<([^/].*?:envelope)\s.+?</\1>#s

RegEx101 Demo 2