java - 如何在 Java 中使用正则表达式从名称中删除某些内容?
问题描述
我正在学习 Java 中的正则表达式,我从服务中收到一个字符串名称。字符串可以是这种形式:
"Dl Frank Joseph",
"Dna Jane XXX",
"Dra XXX YYY",
"Dr XXX YYY",
"XXX YYY".
因此,如果名称"XXX YYY"
保持不变,但如果名称包含“Dl”、“Dna”、“Dra”、“Dr”,那么我应该删除这个词,只保留名称“XXX YYY”。
我怎样才能做到这一点?
解决方案
您可以使用正则表达式,^(?i)(Dl|Dna|Dra|Dr)\\s+
.
演示:
import java.util.stream.Stream;
class Main {
public static void main(String[] args) {
Stream.of(
"Dl Frank Joseph",
"Dna Jane XXX",
"Dra XXX YYY",
"Dr XXX YYY",
"XXX YYY"
).forEach(s -> System.out.println(s.replaceAll("^(?i)(Dl|Dna|Dra|Dr)\\s+", "")));
}
}
输出:
Frank Joseph
Jane XXX
XXX YYY
XXX YYY
XXX YYY
regex101正则表达式的解释:
推荐阅读
- javascript - javascript将文本添加到多个元素
- reactjs - 如何使用 React 中的切换按钮更改背景颜色?
- linux - 我在linux中安装了kibana但它不起作用
- java - SpringBoot缓存不适用于非参数方法
- java - 推土机 - 排除嵌套对象
- c# - 如何将数据库的多个字段的值分配给复选框?
- python - 输入z必须是2D,而不是python中的0D
- java - 具有泛型类型参数的 Autowire 类
- .net - Windows forms turn off waitCursor on the form
- arrays - 循环遍历数组对象以检查值匹配仅适用于第一次迭代,后续迭代失败