具有任意属性值的XML元素的正则表达式

时间:2015-07-08 09:13:24

标签: regex

我对RegEx不太满意。

我有一个包含大量数据和不同格式的文本文件。我想保留这种字符串。

<data name=\"myProptertyValue\" xml:space=\"preserve\">

只有name属性的值可以更改。

所以我想象一个像<data name=\\\"(.)\\\" xml:space=\\\"preserve\\\">这样的正则表达式,但它没有用。

任何提示?

3 个答案:

答案 0 :(得分:1)

试试这个

<data name=\\".*?\\" xml:space=\\"preserve\\">

无需将\添加到"

答案 1 :(得分:0)

您的(.)只会捕获一个字符;添加量词+(“一个或多个”):

/<data name=\\"(.+)\\" xml:space=\\"preserve\\">/

根据您的输入究竟是什么(逐个元素或整个文档)以及您想要实现的目标(删除/替换/测试/捕获),您应该使正则表达式全局化(通过添加g flag),因此它不仅适用一次。此外,您应该通过向+添加?使[^"]量词变得懒惰。这将使它非贪婪,因为您希望捕获停止在属性的结束引号(除了引号外的所有引号:/<data name=\\"(.+?)\\" xml:space=\\"preserve\\">/g )。然后,它将如下所示:

free

答案 2 :(得分:0)

sub("(?m)^\\*.*\n?", "", x, perl=T)

它将捕获“数据名称”中的内容。

如果您在使用正则表达式时遇到问题,使用此类网站构建正则表达式可以帮助您:https://regex101.com/http://regexr.com/等。