Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex XML格式化正则表达式合并行并保持缩进_Regex_Xml - Fatal编程技术网

Regex XML格式化正则表达式合并行并保持缩进

Regex XML格式化正则表达式合并行并保持缩进,regex,xml,Regex,Xml,我有一些xml文件,我想使用正则表达式对其应用通用格式。 基本上我想要的是把这两行放在一行上 ]]> </query> ]> 及 使其具有与开始标记相同的缩进 所以这个例子(或它的任何变体) 应该是这样 <search> <query><![CDATA[ testline1 ]]></query> </search> 以下是使用python的方法:

我有一些xml文件,我想使用正则表达式对其应用通用格式。 基本上我想要的是把这两行放在一行上

      ]]>
    </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>