当前位置:网站首页>正则表达式
正则表达式
2022-07-26 16:30:00 【lonesomee】
正则表达式:
- 用于描述字符串的内容格式,使用它通常用于匹配一个字符串是否符合格式要求
- 正则表达式的语法:
1.[]:表示一个字符,该字符可以是[]中指定的内容
例如:
[abc]:这个字符可以是a或b或c
[a-z]:表示任意一个小写字母
[a-zA-Z]:表示任意一个字母
[a-zA-Z0-9]:表示任意一个字母数字
[a-zA-Z0-9_]:表示任意一个数字字母下划线
[^abc]:该字符只要不是a或b或c
2.预定义字符:
.:表示任意一个字符,没有范围限制
\d:表示任意一个数字,等同于[0-9]
\w:表示任意一个单词字符,等同于[a-zA-Z0-9_]----单词字符指字母/数字/_
\s:表示任意一个空白字符
\D:表示不是数字
\W:不是单词字符
\S:不是空白字符
3.量词:
?:表示前面的内容出现0-1次
例如: [abc]? 可以匹配:a 或 b 或 c 或什么也不写
+:表示前面的内容最少出现1次
例如: [abc]+ 可以匹配:b或aaaaaaaaaa...或abcabcbabcbabcba....
但是不能匹配:什么都不写 或 abcfdfsbbaqbb34bbwer...
*:表示前面的内容出现任意次(0-多次)---匹配内容与+一致,只是可以一次都不写
例如: [abc]* 可以匹配:b或aaaaaaaaaa...或abcabcba....或什么都不写
但是不能匹配:abcfdfsbbaqbb34bbwer...
{n}:表示前面的内容出现n次
例如: [abc]{3} 可以匹配:aaa 或 bbb 或 aab 或abc 或bbc
但是不能匹配: aaaa 或 aad
{n,m}:表示前面的内容出现最少n次最多m次
例如: [abc]{3,5} 可以匹配:aaa 或 abcab 或者 abcc
但是不能匹配:aaaaaa 或 aabbd
{n,}:表示前面的内容出现n次以上(含n次)
例如: [abc]{3,} 可以匹配:aaa 或 aaaaa.... 或 abcbabbcbabcba....
但是不能匹配:aa 或 abbdaw...
4.()用于分组,是将括号内的内容看做是一个整体
例如: (abc){3} 表示abc整体出现3次. 可以匹配abcabcabc
但是不能匹配aaa 或abcabc
(abc|def){3}表示abc或def整体出现3次.
可以匹配: abcabcabc 或 defdefdef 或 abcdefabc
但是不能匹配abcdef 或abcdfbdef
String支持与正则表达式相关的方法:
- matches():使用给定的正则表达式(regex)验证当前字符串的格式是否符合要求,符合则返回true,否则返回false
public class MatchesDemo {
public static void main(String[] args) {
String email = "[email protected]";
String regex = "[a-zA-Z0-9_][email protected][a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
//使用regex匹配email是否符合格式要求
boolean match = email.matches(regex);
if(match){
System.out.println("是正确的邮箱格式");
}else{
System.out.println("不是正确的邮箱格式");
}
}
}
- replaceAll():将当前字符串中满足正则表达式(regex)的部分给替换为给定的字符串(s)
public class ReplaceAllDemo {
public static void main(String[] args) {
String line = "abc123def456ghi78";
line = line.replaceAll("[0-9]+","#NUMBER#");
System.out.println(line);
}
}
- split():将当前字符串按照满足正则表达式的部分进行拆分,将将拆分出的以String[]形式来返回
public class SplitDemo {
public static void main(String[] args) {
String line = "abc123def456ghi";
String[] data = line.split("[0-9]+"); //按数字拆分(数字就拆没了)
System.out.println(Arrays.toString(data)); //将data数组转换为字符串并输出
line = "123.456.78";
data = line.split("\\."); //按.拆(.就拆没了)
System.out.println(Arrays.toString(data));
//最开始就是可拆分项(.),那么数组第1个元素为空字符串""
//如果连续两个(两个以上)可拆分项,那么中间也会拆出一个空字符串""
//如果末尾连续多个可拆分项,那么拆出的空字符串被忽略
line = ".123.456..78.......";
data = line.split("\\."); //按.拆(.就拆没了)
System.out.println(Arrays.toString(data));
}
}边栏推荐
- Analyzing method and proc in Ruby
- Alibaba side: analysis of ten classic interview questions
- MySQL lock mechanism (example)
- ACL-IJCAI-SIGIR顶级会议论文报告会(AIS 2022)笔记3:对话和生成
- 怎么使用C语言嵌套链表实现学生成绩管理系统
- Movable view component (it can be dragged up, down, left and right)
- 中金证券vip账户找谁开安全啊?
- 什么是分布式定时任务框架?
- C#事件和委托的区别
- Win11怎么自动清理回收站?
猜你喜欢

Use verdaccio to build your own NPM private library

Alibaba Cloud Toolkit —— 项目一键部署工具

Linux安装mysql8.0.29详细教程

How to implement Devops with automation tools | including low code and Devops application practice

Why is digital transformation so difficult?!

如何借助自动化工具落地DevOps|含低代码与DevOps应用实践

【飞控开发基础教程1】疯壳·开源编队无人机-GPIO(LED 航情灯、信号灯控制)

MVC和ECS两种设计架构的初浅理解

【飞控开发基础教程2】疯壳·开源编队无人机-定时器(LED 航情灯、指示灯闪烁)

2022牛客暑期多校训练营1(ACDGIJ)
随机推荐
公安部发出暑期旅游客运交通安全预警:手握方向盘 绷紧安全弦
kubernetes之ConfigMap
营销指南 | 几种常见的微博营销打法
Marxan model, reserve optimization and protection vacancy selection technology, application in invest ecosystem
Difference between C event and delegation
怎么使用C语言嵌套链表实现学生成绩管理系统
Configmap of kubernetes
微信小程序---网络数据请求
How to write unit tests
Matlab论文插图绘制模板第40期—带偏移扇区的饼图
Alibaba Cloud Toolkit —— 项目一键部署工具
Pyqt5 rapid development and practice 3.4 signal and slot correlation
Nacos win10 安装配置教程
Selection of industrial serial port to WiFi port to Ethernet module of Internet of things
Clojure operation principle bytecode generation
Movable view component (it can be dragged up, down, left and right)
Win11自动删除文件设置方法
Re7: reading papers fla/mlac learning to predict charges for critical cases with legal basis
极大似然估计
What is a distributed timed task framework?