Java正则表达式完全指南

需积分: 9 0 下载量 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编程能力至关重要,特别是在处理字符串时。