Java 正则表达式代码演示

正则表达式(Regular Expressions)是一种用于描述字符串匹配模式的强大工具。在 Java 中,可以使用 java.util.regex 包来处理正则表达式。

一、基本用法

  1. 导入正则表达式类:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
  1. 编译正则表达式:
String regex = "[\\u4e00-\\u9fa5]+"; // 匹配一个或多个中文汉字
Pattern pattern = Pattern.compile(regex);
  1. 创建 Matcher 对象:
String input = "这个字符串包含中文汉字。";
Matcher matcher = pattern.matcher(input);
  1. 查找匹配项:
while (matcher.find()) {
    System.out.println("匹配找到: " + matcher.group());
}
  1. 提取匹配细节:
while (matcher.find()) {
    int start = matcher.start();
    int end = matcher.end();
    String match = matcher.group();

    System.out.println("匹配找到: " + match);
    System.out.println("起始索引: " + start);
    System.out.println("结束索引: " + end);
}
  1. 替换匹配项:
String input = "这个字符串包含 123 个中文汉字 456。";
String replaced = pattern.matcher(input).replaceAll("XXX");
System.out.println("替换后的字符串: " + replaced); // 输出:这个字符串包含 XXX 个中文汉字 XXX。

二、高级用法

  1. 中文邮箱地址验证:
String regex = "^[\\w\\.-]+@[\\w\\.-]+\\.[\\w\\.-]{2,}$";
Pattern emailPattern = Pattern.compile(regex);
String email = "johndoe@example.com";
Matcher emailMatcher = emailPattern.matcher(email);
if (emailMatcher.matches()) {
    System.out.println("有效邮箱地址: " + email);
} else {
    System.out.println("无效邮箱地址: " + email);
}
  1. 中文手机号码验证:
String regex = "^[1345789][0-9]{9}$";
Pattern phonePattern = Pattern.compile(regex);
String phoneNumber = "13512345678";
Matcher phoneMatcher = phonePattern.matcher(phoneNumber);
if (phoneMatcher.matches()) {
    System.out.println("有效手机号码: " + phoneNumber);
} else {
    System.out.println("无效手机号码: " + phoneNumber);
}
  1. 提取中文姓名和年龄:
String regex = "姓名:([\\u4e00-\\u9fa5]+) 年龄:(\\d+)";
Pattern pattern = Pattern.compile(regex);
String input = "姓名:张三 年龄:30, 姓名:李四 年龄:25";
Matcher matcher = pattern.matcher(input);

while (matcher.find()) {
    String name = matcher.group(1); // 提取第一个组(中文姓名)
    int age = Integer.parseInt(matcher.group(2)); // 提取第二个组(年龄)
    System.out.println("姓名: " + name + ", 年龄: " + age);
}
  1. 使用限定符:
  • 匹配特定数量的出现:
String regex = "ab{2}"; // 匹配 "ab" 恰好两次
  • 匹配最小数量的出现:
String regex = "ab{3,}"; // 匹配 "ab" 三次或更多次
  • 匹配出现次数范围:
String regex = "ab{2,5}"; // 匹配 "ab" 两次到五次

5. 使用正向/反向预言:

正向预言:正向预言使用 (?= 语法,用来指定匹配模式前面必须出现的子模式。例如:

\w+(?<=a):匹配以 "a" 结尾的单词后面的单词
(?<=\\d{3})\\d{3}:匹配前面有三个数字的三个数字

反向预言:反向预言使用 (?!) 语法,用来指定匹配模式前面不能出现的子模式。例如:

\w+(?!b):匹配不以 "b" 开头的单词
(?<!\\d)\\d{3}:匹配前面没有数字的三个数字
  • 正向预言:
String regex = "\\w+(?<=\\b[A-Z]\\b)"; // 匹配紧跟在首字母大写单词后的单词
  • 反向预言:
String regex = "\\w+(?!\\b[AEIOUaeiou]\\b)"; // 匹配不以元音字母开头的单词
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值