一.正则表达式简介
- 正则表达式描述了一种字符串匹配的模式,也称规则表达式
- 常用于检索,替换符合指定模式(规则)的文本
- 大多数语言都支持正则表达式
二.正则表达式语法
- 正则表达式是由普通字符和特殊字符组成的字符串
- 普通字符:原义字符和非打印字符
- 非打印字符如下:
| 字符 | 说明 |
|---|
| \r | 匹配一个回车符 |
| \n | 匹配一个换行符 |
| \t | 匹配一个制表符 |
| \f | 匹配一个换页符 |
- 特殊字符:
- 元字符:
* + ? $ ^ . | \ () {} []
| 字符 | 说明 | 字符 | 说明 |
|---|
| $ | 匹配输入字符串的结尾位置 | ^ | 匹配输入字符串的起始位置 |
| () | 标记子表达式的开始和结束 | \ | 转义符 |
| * | 匹配前面表达式任意次 | ? | 匹配前面表达式0次或多次 |
| + | 匹配前面表达式一次或多次 | {n} | 匹配前面表达式n次 |
| . | 匹配除换行符\n之外的任何单字符 | {n,m} | 最少匹配n次,最多匹配m次 |
| [xyz] | xyz表示字符集合,匹配中括号所包含的任意字符 | x|y | 匹配表达式x或y |
| [^xyz] | 表示匹配非xyz集合中的字符 | [a-z] | 匹配a-z范围的字符 |
| 字符 | 说明 |
|---|
| \d | 匹配数字,等价于[0-9] |
| \D | 匹配非数字,等价于[^\d] |
| \w | 匹配任意字母数字,等价于[a-zA-Z0-9_] |
| \W | 匹配非字母数字,等价于[^\w] |
| \s | 匹配空白字符,等价于[\t\r\n\f\v],注意的是其中包含空格 |
| \S | 匹配非空白字符,等价于[^\s] |
三.java的正则表达式
- 位于java.util.regex包
- Pattern类:表示一个正则表达式(匹配模式)
- Matcher类:Pattern对象matcher()方法的返回值,表示正则表达式对输入字符串的匹配结果
- 演示如下代码:
package regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestRegex {
public static void main(String[] args) {
Pattern p = Pattern.compile("h(?<result1>.?)(\\w*)(.*)");
Matcher m = p.matcher("hhfl_j??");
System.out.println("是否匹配成功?"+m.matches());
if(m.matches()){
System.out.println("无参:"+m.group());
System.out.println("参数为0:"+m.group(0));
System.out.println("参数为变量名(等价于数字1):"+m.group("result1"));
System.out.println("参数为1:"+m.group(1));
System.out.println("参数为2:"+m.group(2));
System.out.println("参数为3:"+m.group(3));
}
}
}
- 运行结果如下:
