首页 > 解决方案 > 如何在 Java 中使用正则表达式从名称中删除某些内容?

问题描述

我正在学习 Java 中的正则表达式,我从服务中收到一个字符串名称。字符串可以是这种形式:

"Dl Frank Joseph", 
"Dna Jane XXX", 
"Dra XXX YYY", 
"Dr XXX YYY",
"XXX YYY". 

因此,如果名称"XXX YYY"保持不变,但如果名称包含“Dl”、“Dna”、“Dra”、“Dr”,那么我应该删除这个词,只保留名称“XXX YYY”。

我怎样才能做到这一点?

标签: javaregex

解决方案


您可以使用正则表达式,^(?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正则表达式的解释:

在此处输入图像描述


推荐阅读