Java正则表达式完全指南
需积分: 9 200 浏览量
更新于2024-09-17
收藏 59KB DOC 举报
Java正则表达式是一种强大的文本处理工具,它允许程序员通过模式匹配来搜索、替换和解析字符串。在Java中,正则表达式是通过`java.util.regex`包中的类和接口实现的。下面将详细讲解Java正则表达式的使用方法以及示例中给出的各种正则表达式模式。
1. **基本概念**
- **模式匹配**:正则表达式是一个字符串,代表一个模式,用于匹配其他字符串。
- **元字符**:如`\`, `^`, `$`, `*`, `+`, `?`, `{}`, `[]`, `|`, `()`, `.`等,它们在正则表达式中有特殊含义。
- **预定义字符类**:如`\d`代表数字,`\s`代表空白字符,`\w`代表单词字符(等同于[a-zA-Z0-9_])。
2. **创建Pattern对象**
使用`Pattern.compile(String regex)`方法创建一个`Pattern`对象,这是使用正则表达式的起点。
3. **匹配与分组**
- **Matcher对象**:通过`Pattern对象.matcher(String input)`方法创建`Matcher`对象,用于实际的匹配操作。
- **分组**:使用圆括号`()`创建分组,分组内的模式可以捕获匹配的子字符串。
4. **匹配方法**
- `matches(String regex)`:检查整个输入字符串是否完全匹配给定的正则表达式。
- `find()`:查找输入字符串中是否存在与正则表达式匹配的子串,返回布尔值。
- `group(int group)`:获取匹配的子串,`group(0)`是整个匹配的子串,`group(1)`是第一个分组匹配的子串。
5. **重复与选择**
- `*`:零次或多次。
- `+`:一次或多次。
- `?`:零次或一次。
- `{n}`:精确匹配n次。
- `{n,}`:至少匹配n次。
- `{n,m}`:匹配n到m次。
6. **位置锚点**
- `^`:匹配输入字符串的开始位置。
- `$`:匹配输入字符串的结束位置。
7. **示例中的正则表达式**
- `^[0-9]+\.{0,1}[0-9]{0,2}$`:匹配整数或最多两位小数的浮点数。
- `^[0-9]*$`:匹配任意长度的数字串。
- `^\d{n}$`:匹配长度为n的数字串。
- `^\d{n,}$`:匹配至少n位的数字串。
- `^\d{m,n}$`:匹配m到n位的数字串。
- `^(0|[1-9][0-9]*)$`:匹配零或非零开头的数字串。
- `^[0-9]+(.[0-9]{2})?$`:匹配有两位小数的正实数。
- `^[0-9]+(.[0-9]{1,3})?$`:匹配有1到3位小数的正实数。
- `^\+?[1-9][0-9]*$`:匹配非零的正整数。
- `^\-[1-9][]0-9"*$`:匹配非零的负整数。
- `^.{3}$`:匹配长度为3的任意字符串。
- `^[A-Za-z]+$`:匹配任意长度的字母串。
- `^[A-Z]+$`:匹配任意长度的大写字母串。
- `^[a-z]+$`:匹配任意长度的小写字母串。
- `^[A-Za-z0-9]+$`:匹配任意长度的字母和数字组合。
- `^\w+$`:匹配任意长度的数字、字母和下划线组合。
- `^[a-zA-Z]\w{5,17}$`:匹配以字母开头,长度在6到18之间的字符、数字和下划线组合。
- `[^%&',;=?$\x22]+`:匹配不包含特定字符的字符串。
- `^[\u4e00-\u9fa5]{0,}$`:匹配任意长度的汉字串。
- `^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$`:验证电子邮件地址格式。
- `^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$`:验证网址URL格式。
- `^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$`:验证电话号码格式。
- `^\d{15}|\d{18}$`:验证15位或18位的身份证号码。
- `^(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])/(19|20)\d{2}$`:验证日期格式(MM/dd/yyyy)。
- `^(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01])-(19|20)\d{2}$`:验证日期格式(MM-dd-yyyy)。
这些示例展示了正则表达式在Java中的广泛应用,包括数据验证、文本提取等多个场景。理解和掌握正则表达式对于提升Java编程能力至关重要,特别是在处理字符串时。
2018-06-12 上传
2012-06-05 上传
2023-11-19 上传
2020-09-03 上传
2009-08-13 上传
2012-12-13 上传
点击了解资源详情
点击了解资源详情
long199208
- 粉丝: 0
- 资源: 1
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析