我对RegEx不太满意。
我有一个包含大量数据和不同格式的文本文件。我想保留这种字符串。
<data name=\"myProptertyValue\" xml:space=\"preserve\">
只有name属性的值可以更改。
所以我想象一个像<data name=\\\"(.)\\\" xml:space=\\\"preserve\\\">
这样的正则表达式,但它没有用。
任何提示?
答案 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/等。