问题描述
在这里,我正在使用 Java 进行自动化,宁静而放心。
所以我想用一个空白字符串替换第二个 <p>
& </p>
标签。
附上模板
<Request>
<P>
<n>name1</n>
<v>${value1}</v>
</P>
<P>
<n>name2</n>
<v>${value2}</v>
</P>
<P>
<n>name3</n>
<v>value3</v>
</P>
</Request>
我使用以下代码替换第二个 <p>
和 </p>
标签。但它被替换了所有 <p>
&</p>
标签(第一个和最后一个 <p>
& </p>
标签也是)
String request = exampleTemplate.replace("${value1}","XYZ")
.replace("<P>","")
.replace("<v>${value2}</v>","1234")
.replace("</P>","")
.replace("${value3}","AAA");
如何只替换第二个 <p>
和 </p>
标签?
解决方法
您可以同时匹配第一个和第二个 <p>
元素。
String res = str.replace("${value1}","XYZ")
.replace("<v>${value2}</v>","1234")
.replace("${value3}","AAA")
.replaceFirst("(?s)(<P>.*?</P>\\s*)<P>(.*?)</P>","$1$2");