Java——正则表达式
Java——正则表达式
近来学习到了正则表达式,在此整理以便理解。
1.定义:
正则表达式(regular expression)是一个字符串,可用于描述匹配一个字符串集合的模式,便于字符串的处理。可以使用正则表达式来进行匹配、替换和拆分字符串。
2.匹配字符串:
String类中的matches方法不仅可以匹配一个固定的字符串,还可以匹配符合一个模式的字符串集。
例如:(语句结果为true。)
其中“Java.*”即为正则表达式,它描述了一个字符串模式,即:以Java开始后面跟0个或多个字符串,其中,子字符串“.*”匹配0个或多个任意字符。
3.正则表达式语法:
正则表达式由字面值字符及特殊符号所组成。下表中列举出了正则表达式的常用的语法。
表1:正则表达式常用语法
正则表达式 |
匹配 |
|
1 |
x |
指定字符x |
2 |
. |
任意单个字符,换行符除外 |
3 |
(ab|cd) |
ab或者cd |
4 |
[abc] |
a、b、c |
5 |
[^abc] |
除了a、b或者c以外的任意字符 |
6 |
[a-z] |
a到z |
7 |
[^a-z] |
除了a到z以外的任意字符 |
8 |
[a-e[m-p]] |
a到e或m到p |
9 |
[a-e&&[c-p]] |
a到e与c到p的交集 |
10 |
\d |
一位数字,等同于[0-9] |
11 |
\D |
一位非数字 |
12 |
\w |
单词字符 |
13 |
\W |
非单词字符 |
14 |
\s |
空白字符 |
15 |
\S |
非空白字符 |
16 |
p* |
0次或者多次出现模式p |
17 |
p+ |
1次或者多次出现模式p |
18 |
p? |
0次或者1次出现模式p |
19 |
p{n} |
正好出现n次模式p |
20 |
p{n,} |
至少出现n次模式p |
21 |
p{n,m} |
n到m(不包含)次出现模式p |
22 |
\p{P} |
一个标点字符!”@#$%^&*()等 |
Ps1:反斜杠是一个特殊的字符,在字符串中开始转义序列。因此Java中需要使用\\来表示\。
Ps2:空白字符是" "、"\t"、"\n"、"\r"、"\f",因此\s和[\t\n\r\f]等同,\S和[^\t\n\r\f]等同。
Ps3:单词字符是任何的字母,数字或下划线字符。因此\w等同于[a-z[A-Z][0-9]_]或者简化为[a-Za-z0-9]。
Ps4:可以使用括号来将模式进行分组。例如:(ab){3}匹配ababab,而ab{3}匹配abbb。
Ps5:表1中后面的六个条目*、+、?、{n}、{n,}以及{n,m}称为量词符(quantifier),用于确定量词符前面的模式会重复多少次。例如,A*匹配0或者多个A,A+匹配1或者多个A,A?匹配0或者1个A。A{3}精确匹配AAA,A{3,}至少匹配3个A,A{3,6}匹配3到6之间个A。*等同于{0,},+等同于{1,},?等同于{0,1}。
Warning:不要在重复量词符中使用空白。例如,A{3,6}不能写成逗号后有一个空白符的A{3, 6}。
常用案例构建正则表达式:
- 电话号码:以日常生活中的11位手机号为例
(xxx-xxxx-xxxx)
2.QQ邮箱:以10位QQ号为例(xxxxxxxxxx@qq.com)
参考资料:
梁勇. Java语言程序设计与数据结构基础篇[M]. 北京:机械工业出版社,2018.167-175
Java——正则表达式相关推荐
- java正则表达式课程_通过此免费课程学习正则表达式
java正则表达式课程 by Beau Carnes 通过博卡恩斯 通过此免费课程学习正则表达式 (Learn Regular Expressions with this free course) & ...
- java正则表达式 1,Java正则表达式学习(1)
Java正则表达式学习(一) 1.什么是正则表达式: 正则表达式(regular expressions) 是一种描述字符串集的方法,它是以字符串集中各种字符串的公有特征为依据的. 正则表达式可以用于 ...
- 孪生素数 java代码_科学网—孪生素数猜想——利用 Java + 正则表达式 输出孪生素数对 - 马廷灿的博文...
查了一下资料,发现正则表达式竟然可以用来检查素数(http://coolshell.cn/articles/2704.html)!(由于工作需要,几年前开始接触.利用正则表达式,给工作带了很大方便,也 ...
- java正则表达式的用法_Java 正则表达式的使用
Java 正则表达式的使用 1:正则表达式语法大全 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符.例如,"n"匹配字符"n".&quo ...
- Java正则表达式--Matcher.group函数的用法
https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...
- java 正则表达式入门(一)
Java正则表达式 定义:具有特定规则的一种表达式语言. 作用:专门用于操作字符串,操作意味着(校验,截取).且可以简化我们对字符串的操作方式 比如,验证手机号码 如果没有正则表达式我们的过程就应该是 ...
- bigint对应java什么类型_「JAVA」从格式化输出到扫描输入,深究Java正则表达式匹配之道
字符串是不可变的 字符串是不可变的,也就是说当字符串的内容发生改变的时候,会创建一个新的String对象:但是如果内容没有发生改变的时候,String类的方法会返回原字符串对象的引用. 而正则表达式往 ...
- Java 正则表达式使用详解
今天研究开源项目,哆啦A梦,研究里面显示log 的原理. 后来发现,用到了正则表达式.觉得很有用,就捡起来,重新研究一下. 学习思路指导: 每一门学问,最好的深入学习方法,是去其官网,研究其说明文档. ...
- java正则表达式 过滤特殊字符的正则表达式
在网上找了好久也没找到个合适的正则表达式以过滤特殊字符:自己学习了下,写了两个,实现要求. Java代码 // 过滤特殊字符 public static String StringFilter(Str ...
- JAVA正则表达式:Pattern类与Matcher类详解(转)
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...
最新文章
- Python是一门杰出的语言,值得你去学习
- 如何优化代码节约系统资源解决重复实例化对象的问题——神奇的单例模式(C#设计模式)...
- JDBC01 利用JDBC连接数据库【不使用数据库连接池】
- element引入的组件大小高度不对_Angular 2:尝试使用ElementRef访问组件高度时的奇怪行为...
- vue.js:634 [Vue warn]: Error in render: “TypeError: Cannot read property ‘matched‘ of undefined“
- Visual Studio 安装失败
- MongoDB compass 连接不上远程服务器的解决方法
- hadoop05---进程线程
- android sharedpreference 清空,Android 从SharedPreferences中存储,检索,删除和清除数据...
- 版本控制选择SVN还是Git?
- SQL之CASE WHEN用法详解
- Ubuntu系统腾讯会议使用ffmpeg屏幕录制+声音录制
- R与Excel之数据分析
- 数据库系统概论--读书笔记--8 关系运算: 选择 投影 连接 除运算
- 圣诞节计算机老师贺卡祝福语,给老师的圣诞节贺卡祝福语
- SpringBoot + JWT + Redis 开源知识社区系统
- 免费的webservice接口(天气预报/IP查询/股票查询/手机归属地等)
- C++友元函数实现两个复数相加
- 单通道16VS 双通道16G(2*8G)
- 百度网盘压缩下载文件的CRC校验错误的解决方法
热门文章
- vue导出excel表格
- IAR软件生成库文件.a的license限制
- 16套51单片机开发板资料共享下载,拼命整理
- 六年级计算机教学进度计划,六年级下册信息技术教学计划及进度计划
- html5创新创业模板,大学生创新创业计划书模板完整版.doc
- cad填充图案乱理石_CAD实用填充图案129种下载_CAD实用填充图案129种官方下载-太平洋下载中心...
- cad填充密度怎么调整_CAD填充图案时无法正常填充看似封闭的区域怎么解决?
- 黑群晖数据迁移白群晖(DS 920+)
- 用小乌龟git解决冲突之后,再提交,出现自己没用动过的文件
- html电脑添加高德地图,vue-cli项目h5页面或者PC端页面引入高德地图组件,多点标注,自定义弹窗的详细描述...