java - 使用正则表达式从子字符串替换java中的一行

标签 java regex replace

假设我有多个文件,如下所示,我循环将它们存储在名为“text”的变量中:

<Property name="FirstProp"><![CDATA[  ]]></PackageProperty>
<Property name="SecondProp"><![CDATA[  ]]></PackageProperty>
<Property name="ThirdProp"><![CDATA[  ]]></PackageProperty>

某些文件中可以包含 CDATA,因此每个文件唯一的共同点是属性名称。我已将 PropertyNames 存储在名为 propNames[ ] 的字符串数组中。因此,“SecondProp”将是 propNames[1]。

我现在想替换第二行以包含一些 CDATA,我已经尝试过,但它不起作用,因为我只想它查看当前行的前后,而不是整个文件。

String CDATAReplacement = "<Property name=\"SecondProp\"><![CDATA[ Some Value ]]></PackageProperty>";
text.replaceAll( "(.*)"+propNames[1]+"(.*)", CDATAReplacement )

最终结果:

<Property name="FirstProp"><![CDATA[  ]]></PackageProperty>
<Property name="SecondProp"><![CDATA[ Some Value ]]></PackageProperty>
<Property name="ThirdProp"><![CDATA[  ]]></PackageProperty>

我可以使用 sed 轻松完成此操作并在 java 程序中执行脚本,但我知道这是不好的做法,因此 Java 解决方案会更好。

最佳答案

我建议您使用JDOM使用 XML 的库:http://www.studytrails.com/java/xml/jdom2/java-xml-jdom2-xpath.jsp 。因此您可以通过 XPath 而不是 regexps 进行工作。

关于java - 使用正则表达式从子字符串替换java中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27109391/

相关文章:

c# - Word 自动化 : Replace an Image using C#

regex - 戈朗 : Remove all characters except | from string

java - 无法获取流 1 : EOF reached while reading in Java 11 HTTP/2 Client

java - 内存不足错误 : Java heap memory (GC heap)

java - Android Studio : Error parsing XML, 无法构建应用程序

c# - 如何从 List<string> 中删除所有非字母数字单词

regex - 在kibana 4中,我想可视化一部分URL字段以进行计数

python - 匹配字符串,其中多个捕获组在正则表达式中必须不同

variables - 批处理文件;用连字符替换变量的空格

java - wlst 嵌入模式不工作