Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java正则表达式提取字符串


在 Java 中,可以使用正则表达式来提取字符串。以下是几种常见的实现方式,每种方式都包含了详细的步骤流程和相应的示例代码。同时,我也会提供每种方式所需的 Maven 和 Gradle 依赖坐标。

假设我们有一个字符串,想要从中提取符合特定模式的子字符串,比如提取所有的邮箱地址。

示例字符串:

Contact us at: john@example.com or jane@example.com

我们的目标是从这个字符串中提取出所有的邮箱地址。

使用 Pattern 和 Matcher 类

这是 Java 标准库中用于处理正则表达式的类。

步骤流程:

  1. 定义正则表达式模式。
  2. 编译正则表达式为 Pattern 对象。
  3. 创建 Matcher 对象,将其与待匹配的字符串关联。
  4. 使用 find() 方法查找匹配项,然后使用 group() 方法获取匹配的子字符串。

示例代码:

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String input = "Contact us at: john@example.com or jane@example.com";
        String regex = "\\w+@\\w+\\.\\w+";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        while (matcher.find()) {
            String email = matcher.group();
            System.out.println("Extracted email: " + email);
        }
    }
}

Maven 依赖:

<!-- 在 pom.xml 中添加以下依赖 -->
<dependency>
    <groupId>org.codehaus.plexus</groupId>
    <artifactId>plexus-utils</artifactId>
    <version>3.3.0</version>
</dependency>

Gradle 依赖:

// 在 build.gradle 中添加以下依赖
dependencies {
    implementation 'org.codehaus.plexus:plexus-utils:3.3.0'
}

使用 Apache Commons StringUtils 类

Apache Commons Lang 库提供了 StringUtils 类,其中包含了许多字符串处理方法,包括正则表达式的支持。

步骤流程:

  1. 引入 Apache Commons Lang 依赖。
  2. 使用 StringUtilsgetMatches 方法进行匹配。

示例代码:

import org.apache.commons.lang3.StringUtils;

public class RegexExample {
    public static void main(String[] args) {
        String input = "Contact us at: john@example.com or jane@example.com";
        String regex = "\\w+@\\w+\\.\\w+";

        String[] emails = StringUtils.substringsBetween(input, "", regex);

        for (String email : emails) {
            System.out.println("Extracted email: " + email);
        }
    }
}

Maven 依赖:

<!-- 在 pom.xml 中添加以下依赖 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

Gradle 依赖:

// 在 build.gradle 中添加以下依赖
dependencies {
    implementation 'org.apache.commons:commons-lang3:3.12.0'
}

这两种方式都可以实现从字符串中提取特定模式的子字符串。选择其中一种方式取决于您对第三方库的偏好以及项目的需求。

regex`包中的`Pattern`和`Matcher`类,以及使用第三方库ApacheCommonsValidator中的`RegexVa ...
Java 开发中,我们往往需要从非结构化的文本数据中截取两个特定字符之间的内容,可以利用正则表达式获取其间信息。 ...
regex`包的内置功能、使用第三方库ApacheCommonsValidator和使用第三方库Guava的`CharMatcher`类。示 ...
Java 没有内置的字符串类型,而是在标准 Java 类库中提供了一个预定义类,很自然地叫做 String。每个用双引号括起来的字符串都是 ...
###方法一:使用Unicode范围匹配汉字这种方式利用了汉字在Unicode编码中的范围,从`\u4e00`到`\u9fa5`是汉字的范围 ...