Java正则表达式的使用
发布日期:2021-11-04 11:54:27 浏览次数:0 分类:技术文章

目录

一、正则匹配

正则表达式只用于操作字符串数据,java标准库的正则表达式解析引擎位于java.util.regex包中。

1.1、精确匹配

正则表达式abc,它只能精确匹配字符串"abc",无法匹配到"abcd"、“ABC”、"aBc"等其它字符串。
若正则表达式中含有特殊字符,必须要用\来转义;由于\也是Java的转义字符之一,所以正则表达式\\,它匹配单个反斜杠。
精确匹配实际上等同于String.equals(),实际上用处并不大。

1.2、模糊匹配

1.2.1 单次匹配

序号 正则表达式 匹配说明
1 . 任 何 一 个 \color{red}{任何一个} 字符
2 \d 任 何 一 个 \color{red}{任何一个} 数字
3 \w 任 何 一 个 \color{red}{任何一个} 单词字符(字母、数字、下划线)
4 \s 任 何 一 个 \color{red}{任何一个} 空白字符(空格符、水平制表符、垂直制表符、换行符、回车符、换页符)
5 \D 任 何 一 个 \color{red}{任何一个} 数字
6 \W 任 何 一 个 \color{red}{任何一个} 单词字符
7 \S 任 何 一 个 \color{red}{任何一个} 空白字符

1.2.2 重复匹配

序号 正则表达式 匹配说明
1 X* X, 零 次 或 多 次 \color{blue}{零次或多次}
2 X+ X, 一 次 或 多 次 \color{blue}{一次或多次}
3 X? X, 一 次 或 一 次 也 没 有 \color{blue}{一次或一次也没有}
4 X{n} X, 恰 好 n 次 \color{blue}{恰好n次} n
5 X{n,} X, 至 少 n 次 \color{blue}{至少n次} n
6 X{n,m} X, 至 少 n 次 , 但 是 不 超 过 m 次 \color{blue}{至少n次,但是不超过m次} nm

1.2.3 复杂匹配

序号 正则表达式 匹配说明
1 ^ 行 的 开 头 \color{green}{行的开头}
2 $ 行 的 结 尾 \color{green}{行的结尾}
3 [abc] a 、 b 或 c \color{green}{a、b或c} abc
4 [^abc] 任何字符, 除 了 a 、 b 或 c \color{green}{除了a、b或c} abc
5 [a-zA-Z] a 到 z 或 A 到 Z \color{green}{a到z或A到Z} azAZ
6 ab|c|d a b 、 c 或 d \color{green}{ab、c或d} abcd
7 (a)c(e) 分 组 匹 配 \color{green}{分组匹配}

二、常见操作

2.1、匹配(matches)

String input = "15812345678";String regex = "1[358]\\d{9}";boolean b = input.matches(regex); System.out.println(b);// true
// 对于重复的匹配,建议采用如下方式Pattern p = Pattern.compile(regex);Matcher m = p.matcher(input);boolean b = m.matches();// 等效于 boolean b = Pattern.matches(regex, input);

2.2、分割(split)

String input = "BobttttAlicemmmmmTom";String regex = "(.)\\1+"; // 反向引用匹配到()捕获组String[] arr = input.split(regex); System.out.println(Arrays.toString(arr));// [Bob, Alice, Tom]
Pattern p = Pattern.compile(regex);String[] arr = p.split(input);System.out.println(Arrays.toString(arr));// [Bob, Alice, Tom]

2.3、替换(replaceAll)

String input = "15812345678";String regex = "(\\d{3})(\\d{4})(\\d{4})";String s = input.replaceAll(regex, "$1****$3"); // 反向引用匹配到的字符串System.out.println(s);// 158****56789
Pattern p = Pattern.compile(regex);Matcher m = p.matcher(input);if (m.matches()){
   	String s = m.replaceAll("$1****$3");	System.out.println(s);	// 158****56789}

2.4、搜索并获取

String input = "Moderation is for cowards.";String regex = "\\b\\w*o\\w*\\b";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(input);while (m.find()){
   	String s = input.substring(m.start(), m.end());	System.out.println(s);}// Moderation// for// cowards
上一篇:openssh
下一篇:新旧版本Java时间、日期API转化

关于作者

    白红宇是个全栈工程师,前端vue,小程序,app开发到后端框架设计,数据库设计,环境部署上线运维。

最新文章

app推送以及提示音java,springboot 整合 Jpush 极光推送 2021-08-13
linux mysql迁移,Linux 下安装MySQL并迁移备份 2021-08-13
Java并发编程实战 代码bug,Java并发编程实战(1)- 并发程序的bug源头 2021-08-13
java一元二次方程面向对象,求解一元二次方程(面向对象设计的),跪求 2021-08-13
linux php oauth安装,php – 无法在Linux上安装OAuth 2021-08-13
php配置文件加载顺序,php extension 加载顺序问题 2021-08-13
php 方法里用外部变量的值,PHP实现函数内修改外部变量值的方法示例 2021-08-13
PHP用gd库给图片添加水印,php用GD库给图片添加水印 2021-08-13
sql查询php,SQL查询或PHP? 2021-08-13
java创建对象过七夕,想 new 个对象过七夕,她却抛了异常 2021-08-13
php8vsgo,服务端 I/O 性能:Node、PHP、Java、Go 的对比 2021-08-13
微信扫雷php源码,最新Thinkphp 5扫雷源码 微信h5兵士扫雷教程_源码全套打包 2021-08-13
php科学计数法转string,php如何将科学计数法转数字 2021-08-13
怎么用PHP修改文字大小,如何利用PHP和CSS改变网页文字大小 2021-08-13
java jsonalias_将多个JSON字段映射到单个Java字段 2021-08-13
java getapplicationcontext_java – getApplicationContext()中的空指针 2021-08-13
centos中配置java视频教程_安装CentOs 2021-08-13
java多属性的map_java - 具有多个参数的MapStruct QualifiedByName - 堆栈内存溢出 2021-08-13
java中write方法报错_Java中管道报错:Write end dead 2021-08-13
java延迟覆盖_高效Java第九条覆盖equals时总要覆盖hashCode 2021-08-13