我有一个XML文件,我需要使用parameterid命名方面(或名称字段,以Aspect为值)找到所有参数,找到参数的结尾,插入比另一个名为linewidth的类似参数(见下文)方面参数
<parameter>
<parameterid>aspect</parameterid>
<name>Aspect</name>
<valuemin>0.1</valuemin>
<valuemax>5</valuemax>
<value>1</value>
</parameter>
现在,我可以使用以下代码执行此操作:
(?m:(<name>Aspect<.+?</value>.))(\t+)(</parameter>)
$1$2$3\n$2<parameter>\n$2\t<parameterid>linewidth</parameterid>\n$2\t<name>Line Width</name>\n$2\t<valuemin>0</valuemin>\n$2\t<valuemax>200</valuemax>\n$2\t<value>20</value>\n$2</parameter>
但是,我首先粘贴所有方面参数。我尝试使用(?<=
,以便我可以找到aspect参数结束的位置。但是,一旦我这样做,(?m:
就不起作用了。有谁知道如何让它们一起工作?只是想知道。
理想情况下,如果像这样的东西会很棒:
(?m:(?<=<name>Aspect<.+?</value>.))(\t+)(</parameter>)
提前完成。
答案 0 :(得分:3)
试试这个正则表达式:
(?m:(<name>Aspect<.+?</value>))(\s+)(</parameter>)
(\s+)
捕获换行符和下一行开头的空格,因此您可能希望从替换字符串中删除所有\n
和\t
转义符。插入的文本没有正确缩进,但正则表达式有效。