正则表达式
本篇笔记记录了关于常用的正则表达式和Java里String对正则表达式的支持
正则的概念:JDK1.4之后引入的Java中,所有的正则支持的类都定义在java.util.regex包里面。
重点:正则标记
所有正则可以用的使用的标记都在java.unti.regex.Pattern类里边。
1、 单个字符(数量:1)
- 字符:表示由一位字符组成 ; x
- \\ 表示转义字符 “\”
- \t 表示一个 “\t”符号
- \n 匹配换行 (\n)符号
2、字符集(数量1)
- [abc] 表示可能是字符a或b或c的任意一位
- [^abc] 表示不是a、b、c中的任意一位
- [a-z]: 表示所有的字母必须小写
- [a-Za-Z] 表示任意的一位字母,不区分大小写
- [A-Z]表示所有的字母必须大写
- [0-9]表示0到9之中的任意一个数字
3.简化的字符集表达式(数量1)
- .表示任意的一位字符
- \d 等价于”[0-9]”,属于简化写法
- \D 等价于 [^0-9] 匹配一个非数字字符
- \s 表示任意空白字符,例如 : \t \n
- \S 表示任意的非空白字符,例如:\T
- \w 等价于[a-zA-z_0-9] 表示由任意字母、数字组成
- \W 等价于[^a-zA-z_0-9] 表示不是由任意字母、数字组成
4.便捷匹配(不要在Java中使用,在JavaScript中使用):
- ^ 正则的开始
- $ 正则的结束
5、数量表达
- 正则? 表示此正则可以出现0或者1次
- 正则 + 表示此正则可以出现1次或1次以上(不能出现0次)
- 正则 * 表示此正则可以出现0次 1次或者多次
- 正则 {n} 表示此正则刚好出现n次
- 正则 {n,} 表示此正则刚好出现n次或者n次以上
- 正则{n,m} 表示正则刚好出现n~m次 包含n m
6、 逻辑运算
- 正则1正则2 正则1判断完成之后继续判断正则2;
- 正则 | 正则2 正则1或者正则2有一组满足即可;
- (正则) 将多个正则作为一组,可以为这一组单独设置出现的次数;
String类对正则的支持
在JDK1.4之后由于正则的引入String类也增加了新的操作方法支持。
序号 | 方法名称 | 类型 | 描述 |
1 | public boolean matches(String regex) | 普通 | 正则验证,使用指定的字符串判断其是否给出的正则表达结构 |
2 | public String replaceAll(String regex,String replacement) | 普通 | 全部替换 |
3 | public String replaceFirst(String regex,String replacement) | 普通 | 替换首个 |
4 | public String[] split(String regex) | 普通 | 全部拆分 |
5 | public String[] split(String regex,int limit) |
| 部分拆分 |
Split示例:
public class TestDemo { |
示例:验证一个字符串会否是数字,如果是则将其变为doulbe类型
数字可能是整数(10)也可能是小数(10.2);
class TestDemo2{ |
范例:判断给定的字符串是否是一个IP地址(IPV4)
IP地址192.168.1.1,每一个字段最长度是3 (1-3个长度都可以)。
class TestDemo3{ |
因为正则里重复的过多可以用(加上正则块)
示例:一个字符串,要求判断其是否是日期格式,如果是则转为Date类型
class TestDemo4{ |
示例:验证email地址
用户名要求由数字、字母、_组成,其中必须以字母开头,结尾可以有字母和数字,用户名最多不超过30位,最后的根域名只能够是.com.net.cn com.cn net.cn .edu .gov .org
class TestDemo5{ |
关于java正则表达式的应用大多数情况都是在用String对正则表达式的支持除特别复杂正则