如何使用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
相关产品推荐
相关产品推荐

