java - 如何在 Java 中替换字符串(正则表达式?)

标签 java regex string

您好,首先感谢您的帮助。

我需要在 Java 中对大量字符串执行一些数据操作。

这是我必须修改的字符串类型的示例:

<span foreground="blue" weight="bold">accomplish</span> vt, vi, 완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다  <span foreground="blue" weight="bold">accomplish</span> a, prep, 완성한, 숙달한, 소양(교양)이 있는 

我需要做什么:

从上面的字符串中删除所有

<span..../span> 

我需要取出:

a、vt、vi、prep 等等。

不要删除所有字符,而只删除特定的 a、 vt、 vi、 准备, 和其他一些。

编辑编辑编辑 所以预期的输出是:

    완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 완성한, 숙달한, 소양(교양)이 있는 

我想我必须使用正则表达式,但我对这件事绝对是新手。

请问有人可以帮我吗?

谢谢

最佳答案

使用String#replaceAll()使用正则表达式:

<span.*?/span>

.replaceAll() 采用正则表达式作为第一个参数,而 .replace() 采用 String (一个 CharSequence 实际上)。

Java代码:

String s = "<span foreground=\"blue\" weight=\"bold\">accomplish</span> vt, vi, 완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다  <span foreground=\"blue\" weight=\"bold\">accomplish</span> a, prep, 완성한, 숙달한, 소양(교양)이 있는 ";
System.out.println(s.replaceAll("<span.*?/span>", ""));

输出:

vt, vi, 완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다   a, prep, 완성한, 숙달한, 소양(교양)이 있는 


更新:

如果您需要取出更多内容,可以使用 | 运算符将它们放入正则表达式中。例如:

<span.*?/span>|a,|vt,|vi,|prep,|whateverYouWantDontForgetToEscape

工作代码:

System.out.println(s.replaceAll("<span.*?/span>|a,|vt,|vi,|prep,", ""));

输出:

   완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다     완성한, 숙달한, 소양(교양)이 있는 

更新 2:

根据您刚刚发布的预期输出,您还希望删除重复的空格。为此,请使用此正则表达式:

(<span.*?/span>|a,|vt,|vi,|prep,)(\s(?<=\s))*

Java代码:

System.out.println(s.replaceAll("(<span.*?/span>|a,|vt,|vi,|prep,)(\\s(?<=\\s))*", ""));

输出:

완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다  완성한, 숙달한, 소양(교양)이 있는 

关于java - 如何在 Java 中替换字符串(正则表达式?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16615840/

相关文章:

java - FontFactor.getFont() 的编码

java - JDBC 连接超时

java - 如何对引用文献列表进行排序?

javascript - 使用区分大小写字符的正则表达式拆分字符串上的名称

Python解析数据框元素

java - shell 脚本崩溃后可靠地重新启动 java 进程

javascript - Match() 方法的正则表达式错误

python - 如何检查 float 字符串?

c# - 如何在 C# 中将 "=?utf-8?B?...?="解码为字符串

c++ - 如何只从字符串中获取数字?