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@]:匹配a、b、5或@。[^abc]:匹配除了a、b、c之外的所有字符(^表示取反)。
- 使用连字符
-定义字符范围。[a-z]:匹配大小写字母a到z。[^A-F0-3]:匹配不在A到F、0到3范围内的字符。
1.4量词与边界
- 量词:修饰匹配字符出现次数。
{n}:重复n次。{m,n}:重复m到n次。{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实现位置验证。
通过合理运用正则表达式,可以显著提升文本处理效率,实现精确匹配和自动化操作。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2026年06月20日 23时06分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
phpmyadmin 安装
2023-02-28
phpmyadmin数据库建表及插入
2023-02-28
phprpc简单使用
2023-02-28
phpstorm中Xdebug的使用
2023-02-28
phpstorm中使用svn版本控制器
2023-02-28
phpstorm配置php脚本执行
2023-02-28
PhpStorm配置远程xdebug
2023-02-28
phpStudy安装教程
2023-02-28
phpunit
2023-02-28
phpWhois 项目推荐
2023-02-28
phpwind部署问题
2023-02-28
PHP__call __callStatic
2023-02-28
php一句话图片运行,【后端开发】php一句话图片木马怎么解析
2023-02-28
php上传文件找不到临时文件夹
2023-02-28
PHP下curl用法分析
2023-02-28
php与web服务器关系
2023-02-28
redis事务操作
2023-02-28
PHP中array_merge和array相加的区别分析
2023-02-28
PHP中dirname(__FILE__)的意思
2023-02-28
PHP中extract()函数的妙用
2023-02-28