我有一个简单的xml文件,我想删除第一个<item>标记之前的所有内容.
<sometag>
<something>
.....
</something>
<item>item1
</item>
....
</sometag>
Run Code Online (Sandbox Code Playgroud)
以下java代码无效:
String cleanxml = rawxml.replace("^[\\s\\S]+<item>", "");
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?我该如何解决非贪婪问题?对不起,我是C#程序员.
好吧,如果你想使用正则表达式,那么你可以使用replaceAll. 该解决方案使用了一个勉强的量词和一个反向引用:
String cleanxml = rawxml.replaceAll(".*?(<item>.*)", "$1");
Run Code Online (Sandbox Code Playgroud)
或者您可以使用replaceFirst. 该解决方案使用正向前瞻。
String cleanxml = rawxml.replaceFirst(".*?(?=<item>)", "");
Run Code Online (Sandbox Code Playgroud)
indexOf不过,仅使用and更有意义substring。
String cleanxml = rawxml.substring(rawxml.indexOf("<item>"));
Run Code Online (Sandbox Code Playgroud)
replace不起作用的原因是重载char和CharSequence重载都不是基于正则表达式的。这是简单的字符(序列)替换。
另外,正如其他人警告您的那样,除非您正在处理简单的 XML,否则不应使用正则表达式。您应该使用实际的 XML 解析器。
| 归档时间: |
|
| 查看次数: |
293 次 |
| 最近记录: |