正则表达式
字符
符号 | 描述 |
---|---|
\ | 反斜线,用于转义时,需双反斜线 |
限定符
符号 | 描述 |
---|---|
? | 表示?前面得到字符需要出现0次或1次 |
* | 表示*前面的字符出现0次或多次 |
+ | 表示+前面的字符出现1一次及以上 |
{…} | 表示{…}前面的字符出现花括号({…})中的数字对应的次数 如果需要出现范围在2-6,则表示为{2,6} 如果需要出现范围在2次以上,则表示{2,} |
(…) | 表示一个整体,配合其他限定符使用 |
或运算
符号 | 描述 |
---|---|
| | 表示要么满足|之前紧跟着的字符,要么满足|之后紧跟着的字符 |
字符类
符号 | 描述 |
---|---|
[…] | 表示只能中括号中的字符 |
[a-z] | 表示匹配所有小写字母 |
[A-Z] | 表示匹配所有大写字母 |
[0-9] | 表示匹配所有数字 |
[a-zA-Z0-9] | 表示匹配所有大小写字母以及所有数字 |
[^…] | 表示匹配除了中括号中字符以外的字符 |
元字符
符号 | 描述 |
---|---|
\d | 数字字符,等同于[0-9] |
\w | 单词字符(英文、数字以及下划线) |
\s | 空白符(包含Tab和换行符) |
\D | 非数字字符 |
\W | 非单词字符 |
\S | 非空白字符 |
. | 任意字符,但不包含换行符 |
^ | 匹配行首 例如:^a,表示匹配行首的a字符 |
$ | 匹配行尾 例如:a$,表示匹配行尾的a字符 |
\b | 表示单词字符的边界 |
案例:
RBG颜色值匹配
正则表达式:#[a-fA-F0-9]{6}\b
地址值匹配
IPv4:xxx.xxx.xxx.xxx 被句点分割成4部分,每部分为3位,范围为0-255
描述 | 正则表达式 | |
---|---|---|
个位 | 百位、十位固定,个位范围0-5 | 25[0-5] |
十位 | 百位固定,则十位取值范围0-4,个位范围0-9 | 2[0-4]\d |
百位 | 百位范围0-1,十位范围0-9,个位范围0-9 | [01]\d\d |
一个部分的正则组合起来:25[0-5]|2[0-4]\d|[01]\d\d
然而ip地址 每个部分可以是一位数,也可以是二位数,所以整合后的正则表达式:25[0-5]|2[0-4]\d|[01]?\d\d?
最后ip正则表达式为:
\b((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\b
正则表达式相关功能
判断功能:
String类 --> boolean matches(String regex):告知此字符串是否匹配给定的正则表达式
分割功能:
String类 --> String[] split(String str)
替换功能:
String replaceAll(String regex, String replacement)
获取功能:
使用步骤:
//将正则表达式编译成模式对象
Pattern p = Pattern.compile(规则);
//通过模式对象得到匹配器对象 这里的字符串是被匹配的字符串
Matcher m = p.matcher(被匹配的字符串);
m.find() : 字符串中是否有匹配的内容
m.group(): 获取字符串中匹配的内容
注意:先find()进行判断返回true在进行group()获取.