本文共 1645 字,大约阅读时间需要 5 分钟。
一.正则表达式简介
- 正则表达式描述了一种字符串匹配的模式,也称规则表达式
- 常用于检索,替换符合指定模式(规则)的文本
- 大多数语言都支持正则表达式
二.正则表达式语法
- 正则表达式是由普通字符和特殊字符组成的字符串
- 普通字符:原义字符和非打印字符
- 非打印字符如下:
字符 | 说明 |
\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;/** * @author sunyong * @date 2020/05/19 * @description * 测试正则表达式 */public class TestRegex { public static void main(String[] args) { Pattern p = Pattern.compile("h(? .?)(\\w*)(.*)");//匹配模式 Matcher m = p.matcher("hhfl_j??");//匹配的对象 System.out.println("是否匹配成功?"+m.matches());//匹配成功? //匹配之后才能处理 if(m.matches()){ //匹配的结果 // 命名分组 参数为整数代表第几个括号的内容 0为整体内容(和无参一样) // 命名分组 参数用? <变量名> 表示 直接调用该变量名 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)); } }} 变量名>
- 运行结果如下:
转载地址:http://pdjxi.baihongyu.com/