Java 过滤掉匹配的内容

介绍

在 Java 开发中,我们经常需要对字符串进行过滤和处理。有时候我们需要从一个字符串中提取出符合特定条件的内容,或者移除掉不符合特定条件的内容。本文将介绍如何使用 Java 进行内容过滤,包括正则表达式、字符串函数等方法。

正则表达式

正则表达式是一种用于匹配、搜索和替换字符串的强大工具。在 Java 中,可以使用 java.util.regex 包提供的类来进行正则表达式操作。

正则表达式的基本语法

正则表达式由特殊字符和普通字符组成。特殊字符具有特殊的含义,普通字符则表示其字面值。下表列出了一些常用的特殊字符和它们的含义:

字符 含义
. 匹配任意单个字符
\d 匹配任意数字
\w 匹配任意字母、数字或下划线字符
\s 匹配任意空白字符
^ 匹配字符串的开头
$ 匹配字符串的结尾
* 匹配前面的元素零次或多次
+ 匹配前面的元素一次或多次
? 匹配前面的元素零次或一次
{n} 匹配前面的元素恰好 n 次
{n,} 匹配前面的元素至少 n 次
{n,m} 匹配前面的元素至少 n 次,最多 m 次

使用正则表达式进行匹配

下面是一个使用正则表达式进行匹配的示例:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String[] args) {
        String str = "Hello, 123 World!";
        String regex = "\\d+";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        
        while (matcher.find()) {
            String matched = matcher.group();
            System.out.println("Matched: " + matched);
        }
    }
}

在上面的示例中,我们使用 Pattern.compile() 方法编译正则表达式,并使用 Matcher 对象进行匹配操作。matcher.find() 方法用于找到下一个匹配项,matcher.group() 方法用于获取匹配的内容。

以上代码输出如下结果:

Matched: 123

使用正则表达式进行替换

除了匹配操作,我们还可以使用正则表达式进行替换。下面是一个使用正则表达式进行替换的示例:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String[] args) {
        String str = "Hello, 123 World!";
        String regex = "\\d+";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        
        String replaced = matcher.replaceAll("ABC");
        System.out.println("Replaced: " + replaced);
    }
}

在上面的示例中,我们使用 matcher.replaceAll() 方法将匹配到的内容替换为指定的字符串。

以上代码输出如下结果:

Replaced: Hello, ABC World!

字符串函数

除了正则表达式,Java 还提供了许多字符串函数,可以用于过滤和处理字符串。

startsWith() 和 endsWith()

startsWith() 方法用于检查字符串是否以指定的前缀开头,endsWith() 方法用于检查字符串是否以指定的后缀结尾。下面是一个使用这两个方法进行过滤的示例:

public class StringExample {
    public static void main(String[] args) {
        String str = "Hello, World!";
        
        if (str.startsWith("Hello")) {
            System.out.println("Starts with Hello");
        }
        
        if (str.endsWith("World!")) {
            System.out.println("Ends with World!");
        }
    }
}

以上代码输出如下结果:

Starts with Hello
Ends with World!

contains()

contains() 方法用于检查字符串