Java:String.replace(regex,string)从XML中删除内容

Too*_*ook 3 java regex xml

假设我有一个字符串形式的XML.我希望删除XML String中两个标记之间的内容.我试过了:

String newString = oldString.replaceFirst("\\<tagName>.*?\\<//tagName>",
                                                              "Content Removed");
Run Code Online (Sandbox Code Playgroud)

但它不起作用.关于我做错了什么的指示?

Sea*_*oyd 8

好的,除了明显的答案(不要用正则表达式解析XML),也许我们可以解决这个问题:

String newString = oldString.replaceFirst("(?s)<tagName[^>]*>.*?</tagName>",
                                          "Content Removed");
Run Code Online (Sandbox Code Playgroud)

说明:

(?s)             # turn single-line mode on (otherwise '.' won't match '\n')
<tagName         # remove unnecessary (and perhaps erroneous) escapes
[^>]*            # allow optional attributes
>.*?</tagName>   
Run Code Online (Sandbox Code Playgroud)

您确定正确匹配标签案例吗?也许您还想将i标志添加到模式中:(?si)