JavaWeb学习笔记(4)__正则表达式
发布日期:2021-04-30 21:00:26 浏览次数:159 分类:精选文章

本文共 1845 字,大约阅读时间需要 6 分钟。

正则表达式是字符串操作的强大工具,广泛应用于文本处理、数据验证、数据提取等场景。本文将从基础到应用,全面解析正则表达式的核心原理和实用技巧。

1. 正则表达式的基本概念

正则表达式是用于匹配字符串特定模式的规则语言。它通过定义字符集、组合方式和边界条件,能够精准识别符合规则的文本内容。

1.1字符分类

  • 普通字符:包括字母、数字、下划线以及非特殊意义的标点符号。
  • 转义字符:特殊字符如换行符 \n、制表符 \t、反斜杠 \\ 以及其他具有特殊含义的符号,需在表达式中使用转义方式表示它们的本意。

1.2标准字符集合

  • \d:匹配任意一个数字(0-9)。
  • \D:匹配任意一个非数字字符。
  • \w:匹配字母、数字或下划线。
  • \W:匹配非字母、非数字、非下划线的字符。
  • \s:匹配任意一种 whitespace(包括空格、制表符、换行符等)。
  • \S:匹配任意一种非 whitespace字符。
  • .:匹配任意一个字符(除换行符外)。

1.3自定义字符集合

  • 使用方括号 [] 定义特定字符集合。
    • [ab5@]:匹配 ab5@
    • [^abc]:匹配除了 abc 之外的所有字符(^ 表示取反)。
  • 使用连字符 - 定义字符范围。
    • [a-z]:匹配大小写字母 az
    • [^A-F0-3]:匹配不在 AF03 范围内的字符。

1.4量词与边界

  • 量词:修饰匹配字符出现次数。
    • {n}:重复 n 次。
    • {m,n}:重复 mn 次。
    • {m,}:重复至少 m 次。
    • ?:匹配 0 次或 1 次(相当于 {0,1})。
    • +:匹配至少 1 次(相当于 {1,})。
    • *:匹配 0 次或更多次(相当于 {0,})。
  • 边界条件
    • ^:匹配字符串开头。
    • $:匹配字符串结尾。
    • \b:匹配单词边界,表示非单词字符的位置。

1.5匹配模式选项

  • IGNORECASE:忽略大小写,默认为区分大小写。
  • SINGLELINE:在整个字符串中寻找模式,.不匹配换行符。
  • MULTILINE:在每一行中寻找模式,支持 \A\Z 匹配整个文本。

2. 正则表达式的实际应用

2.1常见用途示例

  • QQ号码:6~10位,首位不能为 0。
    • 正则表达式:[1-9]\d{5,9}
  • 手机号:11位,首位为 3、5、7、8、9。
    • 正则表达式:3\d{9}|5\d{9}|7\d{9}|8\d{9}|9\d{9}
  • 邮箱地址:包含字母、数字、特殊字符及域名。
    • 正则表达式:\b[\w-]+@[\w-\.]+(\.\w{2,3}){1,2}

2.2 Java中的正则表达式使用

在 Java 中,正则表达式通过 java.util.regex 包实现。以下是常用功能示例:

1. 创建匹配模式
Pattern pattern = Pattern.compile("正则表达式");Matcher matcher = pattern.matcher("输入文本");
2. 字符串匹配
boolean matches = matcher.matches();
3. 查找模式
boolean found = matcher.find();
4. 分组匹配
Pattern p = Pattern.compile("(\\w+)-(\\w+)"); // 分组匹配Matcher m = p.matcher("aa-111-bb-235");while (m.find()) {    System.out.println(m.group(0)); // aa-111, bb-235    System.out.println(m.group(1)); // aa, bb    System.out.println(m.group(2)); // 111, 235}
5. 替换与分割
Pattern p = Pattern.compile("[0-9]");Matcher m = p.matcher("aa1bbb253cc9d");String result = m.replaceAll("*"); // 替换所有数字为星号

3. 高级功能应用

  • 非捕获组:用于不需要保存结果的分组操作。
  • 反向引用:通过 (?<id>) 记录捕获组并在整个文本中引用。
  • 零宽断言:通过 (?=exp)(?<=exp)(?!)exp 实现位置验证。

通过合理运用正则表达式,可以显著提升文本处理效率,实现精确匹配和自动化操作。

上一篇:JDK代理、CGLIB代理及静态代理
下一篇:centos7.4初探mahout源码-单机安装编译

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2026年06月20日 23时06分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章