gpt4 book ai didi

java - 简单的java正则表达式替换问题

转载 作者:搜寻专家 更新时间:2023-10-31 19:42:13 25 4
gpt4 key购买 nike

我有一个简单的 xml 文件,我想删除第一个 <item> 之前的所有内容标签。

<sometag>
<something>
.....
</something>
<item>item1
</item>
....
</sometag>

以下 java 代码不工作:

String cleanxml = rawxml.replace("^[\\s\\S]+<item>", "");

正确的做法是什么?我该如何解决非贪婪问题?抱歉,我是一名 C# 程序员。

最佳答案

好吧,如果你想使用正则表达式,那么你可以使用replaceAll。该解决方案使用勉强的量词和反向引用:

String cleanxml = rawxml.replaceAll(".*?(<item>.*)", "$1");

或者,您可以使用 replaceFirst。此解决方案使用积极的前瞻性。

String cleanxml = rawxml.replaceFirst(".*?(?=<item>)", "");

不过,仅使用 indexOfsubstring 更有意义。

String cleanxml = rawxml.substring(rawxml.indexOf("<item>"));

replace 不起作用的原因是 charCharSequence 重载都不是基于正则表达式的。这是简单的字符(序列)替换。


另外,正如其他人警告您的那样,除非您正在处理简单的 XML,否则您不应该使用正则表达式。您应该改用实际的 XML 解析器。

关于java - 简单的java正则表达式替换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2547120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com