You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java正则表达式从指定字符串提取目标子串?

提取匹配「String, String.」格式的内容:Java正则实现方案

要从给定字符串中提取符合「X, Y.」格式的子串,我们可以通过精准的正则表达式结合Java的Pattern和Matcher类来实现,下面是具体步骤:

1. 分析目标匹配模式

我们要找的子串结构是:

  • 第一部分:任意不含逗号的字符(比如Neil或Satyam)
  • 分隔符:逗号 + 空格(, )
  • 第二部分:任意不含句号的字符(比如Gogte或B)
  • 结尾:句号(.)

对应的正则表达式可以写成:([^,]+, [^.]+\\.)

正则表达式拆解

  • [^,]+:匹配1个或多个非逗号的字符,确保我们拿到逗号前的完整内容
  • , :严格匹配逗号加空格(如果需要支持多个空格,可以改成,\\s+,\\s匹配任意空白字符)
  • [^.]+:匹配1个或多个非句号的字符,避免把后续内容(比如: Introduction)包含进来
  • \\.:匹配结尾的句号(Java中需要用双反斜杠转义句号,因为句号在正则里是通配符)

2. Java代码实现

下面是完整的提取代码,直接运行就能得到你要的结果:

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

public class NameExtractor {
    public static void main(String[] args) {
        String input = "Neil, Gogte., Satyam, B.: Introduction to Java";
        // 定义匹配规则
        String regex = "([^,]+, [^.]+\\.)";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        // 遍历所有匹配结果并输出
        while (matcher.find()) {
            System.out.println("提取结果:" + matcher.group(1));
        }
    }
}

3. 运行结果

执行这段代码后,控制台会输出:

提取结果:Neil, Gogte.
提取结果:Satyam, B.

完美命中你需要的两个子串!如果遇到类似格式的变种(比如逗号后有多个空格、名字中间有缩写),只需要微调正则表达式的细节即可。

内容的提问来源于stack exchange,提问作者Anunay Aatipamula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:07:33