Regex XML格式化正则表达式合并行并保持缩进
我有一些xml文件,我想使用正则表达式对其应用通用格式。 基本上我想要的是把这两行放在一行上Regex XML格式化正则表达式合并行并保持缩进,regex,xml,Regex,Xml,我有一些xml文件,我想使用正则表达式对其应用通用格式。 基本上我想要的是把这两行放在一行上 ]]> </query> ]> 及 使其具有与开始标记相同的缩进 所以这个例子(或它的任何变体) 应该是这样 <search> <query><![CDATA[ testline1 ]]></query> </search> 以下是使用python的方法:
]]>
</query>
]>
及
使其具有与开始标记相同的缩进
所以这个例子(或它的任何变体)
应该是这样
<search>
<query><![CDATA[
testline1
]]></query>
</search>
以下是使用python的方法:
from lxml import etree
test = """your xml above"""
doc = etree.XML(test)
target = doc.xpath('//query')[0]
target.text = etree.CDATA("".join(target.text.rsplit('\n',1)))
print(etree.tostring(doc).decode())
输出:
<search>
<query><![CDATA[
testline1
]]></query>
</search>
您需要将*?
与点调用修饰符一起使用,(\s*)(\n*
。请参阅,通常不建议在xml上使用正则表达式-首选xml解析器。根据您使用的语言,可以获得所需的输出。例如,在python中,您可以使用lxml库。@Wiktor第一个示例是它的外观,第二个示例需要格式化。但未选中。是否选择你有什么想法吗?@Jack我正在用visual studio代码开发仪表盘。所以它只是格式化实际文件,而不是动态代码。但任何解决方案都可以,所以如果你知道一个好的解析器作为扩展,可以使用这种格式发送链接:)关于如何使用python,请参见下面的答案。评论太长,如果与您正在做的事情无关,也没什么大不了的。
<search>
<query><![CDATA[
testline1
]]></query>
</search>