Java学习day028(正则表达式)
JavaSe的学习也已经接近尾声了,还有很多笔记没整理,先整理正则表达式的
后面整理的有些不是太认真,都以后在整理
正则表达式
- 1.什么是正则表达式
- 2.元字符
- 3.反义符
- 4.重复(位数/长度)
- 5.分组
- 6.贪婪与懒惰
1.什么是正则表达式
Regular Expression:它由一组具有特定含义的字符串组成,通常用于匹配、查找和替换文本。
java专门提供了java.util.regex包,用来处理正则
同时在字符串对象中,提供如下方法,可以使用正则
replaceAll()
replaceFirst()
split()
matches()
2.元字符
常用的元字符 | |
---|---|
代码 | 说明 |
. | 匹配除换行符(\n)以外的任意字符 |
\w | 匹配大小写字母或数字或下划线或汉字0-9、a-z、A-Z、_(下划线)、汉字和其他国家的语言符号 |
\W | 匹配非字母或数字或下划线或汉字,跟\w正好相反 |
\s | 匹配任意的空白符 |
\S | 匹配任意非空白符 |
\d | 匹配数字 |
\D | 匹配非数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
[ ] | 匹配[]中列举的字符 |
package com.study_re;public class Test01 {public static void main(String[] args) {// . 表示任意字符System.out.println("a".matches(".")); // trueSystem.out.println("ba".matches(".a")); // true// 单独匹配一个点System.out.println(".".matches("\\.")); // true// . 可以匹配任意字符 除了 \nSystem.out.println("\n".matches(".")); // false// \\w 可以匹配 a-z A-Z _System.out.println("a".matches("\\w")); // trueSystem.out.println("1".matches("\\w")); // trueSystem.out.println("_".matches("\\w")); // trueSystem.out.println("?".matches("\\w")); // false// \\W 匹配和\\w相反的内容// \\d 可以匹配数字(En:digital)System.out.println("1".matches("\\d")); // trueSystem.out.println("a".matches("\\d")); // false// \\D 匹配非数字// \\s 匹配空格System.out.println(" ".matches("\\s\\s")); // true// 制表符也是空格System.out.println("\t".matches("\\s")); // true// \\S 匹配非数字// [ab] 匹配a或bSystem.out.println("b".matches("[abcde]")); // 匹配a-eSystem.out.println("b".matches("[a-e]")); // 匹配a-e// \\w 可以这样写System.out.println("a".matches("[a-zA-Z0-9_]"));// ^ 匹配开头,也可以是反义的意思System.out.println("a".matches("^[a]")); // trueSystem.out.println("cbc".matches("^[abc]..")); // true// 反义 ^[a] 匹配除了a以外的其它字符System.out.println("1".matches("[^a]")); // true}
}
3.反义符
常用的反义代码 | |
---|---|
代码/语法 | 说明 |
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[ ^x ] | 匹配除了x以外的任意字符 |
[ ^aeiou ] | 匹配除了aeiou这几个字母以外的任意字符 |
4.重复(位数/长度)
常用的限定符 | |
---|---|
代码/语法 | 说明 |
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
package com.study_re;public class Test02 {public static void main(String[] args) {// * 匹配0或更多次// + 匹配1或更多次// ? 匹配0或1次System.out.println("Liutao".matches("[A-Z][a-z]*")); // 匹配大写字母开头的单词System.out.println("Liutao".matches("[A-Za-z]*")); // 匹配单词System.out.println("Liutao18".matches("[A-Za-z]+[\\w]*")); // trueSystem.out.println("1".matches("[0-9]?[\\d]")); // trueSystem.out.println("111".matches("[0-9]?[\\d]")); // false// {n} 重复n次// {n,} 重复n次或更多次// {n,m} 重复n次到m次System.out.println("1sadfasdf11".matches("\\w{5}"));System.out.println("1sadfasdf11".matches("\\w{5,}"));System.out.println("1sadfasdf11".matches("\\w{5,9}"));}
}
5.分组
这个分组就是如果没有捕获对象的话,获取值group()就不用传递参数,如果有一个或多个捕获对象,那么group()就需要传递索引用来获取具体的捕获对象
===Pattern===
static Pattern compile(String regex) 将给定的正则表达式编译为模式
Matcher matcher(CharSequence input) 创建一个匹配器,匹配给定的输入与此模式===Matcher===
boolean find() 尝试找到匹配模式的输入序列的下一个子序列
String group() 返回与上一个匹配匹配的输入子序列
Matcher reset() 重设此匹配器
int start() 返回上一个匹配的起始索引
int end() 返回最后一个字符匹配后的偏移量
String group(int group) 返回在上一次匹配操作期间由给定组捕获的输入子序列
package com.study_re;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test03 {public static void main(String[] args) {Pattern p = Pattern.compile("\\d+");Matcher m = p.matcher("今年我16岁了,18岁就要成年了");System.out.println(m.find()); // trueSystem.out.println(m.group()); // 16m.reset(); // 重设匹配器System.out.println(m.find()); // trueSystem.out.println(m.group()); // 16while (m.find()) {System.out.println(m.group() + "--" + m.start() + "--" + m.end());}// 分组
// Pattern p = Pattern.compile("(\\d+)"); // 注意这个地方 "(\\d+)" 表示的是捕获组
// Matcher m = p.matcher("今年我16岁了,18岁就要成年了");
// while(m.find()) {// System.out.println(m.group(1));
// }}}
6.贪婪与懒惰
在Java中正则默认是贪婪模式(个别语言中也可能是非贪婪模式),贪婪模式就是总会尝试匹配更多的字符。
非贪婪模式则反之,总是尝试匹配尽可能少的字符。
在*、?、+、{m,n}后面加上?,可以将贪婪模式变成非贪婪模式(懒惰模式)。
懒惰限定符 | |
---|---|
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
{n,m}? | 重复n到m次,但尽可能少重复 |
{n,}? | 重复n次以上,但尽可能少重复 |
Java学习day028(正则表达式)相关推荐
- Java学习-17 正则表达式简述
Java学习-17 正则表达式 1.什么是正则表达式? 正则表达式是构成搜索模式(search pattern)的字符序列. 当您搜索文本中的数据时,您可使用搜索模式来描述您搜索的内容. 正则表达式可 ...
- Java学习笔记——正则表达式(Pattern类、Matcher类和PatternSyntaxException)
目录 一.Pattern类 (一)Pattern 介绍 (二)Pattern 方法 二.Matcher类 (一)Matcher 类介绍 (二)Matcher 类方法 三.PatternSyntaxEx ...
- Java学习之正则表达式篇
文章目录 快速入门 正则表达式基本语法 1. 字符匹配符 2. 选择匹配符 3. 限定符 4. 定位符 5. 分组组合 .反向引用符 6.特殊字符 三个常用类 Pattern Matcher Patt ...
- Java学习笔记-正则表达式的模式匹配
正则表达式(Regex)为被匹配的文本模式提供了简明扼要的规范. 关于正则表达式的语法,可以参考相关书籍和这个网址:http://edu.yesky.com/edupxpt/18/2143018.sh ...
- JAVA学习 API_day02(正则表达式, StringBuider, 包装类, Collection集合类接口)
正则表达式, 包装类, Collection集合类接口 1.正则表达式 2.StringBuider类 3.包装类 4.Collection接口 1.正则表达式 public final class ...
- Java学习笔记--StringTokenizer的使用
2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...
- java js 正则表达式_如何在JavaScript与Java中使用正则表达式
如何在JavaScript与Java中使用正则表达式 发布时间:2021-02-11 13:16:01 来源:亿速云 阅读:69 作者:Leah 如何在JavaScript与Java中使用正则表达式? ...
- java 中的正则表达式_Java中的正则表达式–软介绍
java 中的正则表达式 正则表达式是一种可以应用于文本(Java中的String)的模式. Java提供了java.util.regex包,用于与正则表达式进行模式匹配. Java正则表达式与Per ...
- Java中的正则表达式–软介绍
正则表达式是一种可以应用于文本(Java中的String)的模式. Java提供了java.util.regex包,用于与正则表达式进行模式匹配. Java正则表达式与Perl编程语言非常相似,并且非 ...
最新文章
- TFS 2010 使用手册(二)项目集合与项目
- Android官方开发文档Training系列课程中文版:调用相机之简单摄像
- 设计模式之观察者模式在Listview中的应用
- 货物被偷把沃尔玛逼急了 将在逾1000家门店安装AI相机
- [转载]jquery ajax/post/get 传参数给 mvc的action
- risksystem_环境风险评价系统(RiskSystem)
- Python读取PDF文档并翻译
- 搭建STM32开发环境——STM32CubeMX并配合Keil5重写跑马灯程序
- C语言程序设计基础(01)—— 计算机与程序设计基础
- Win7 蓝牙耳机无法使用
- opensuse安装搜狗输入法
- PLC系统的选型以及应用方法
- c语言打印字符图案,C语言-打印字符图形.doc
- linux nodejs 502错误,node.js – NPM安装失败,出现502错误
- word中尾注分隔符删除后还有一个回车符怎么删
- 厚朴汇智李艳华:如何培养优秀猎头顾问?
- 【LEDE】树莓派上玩LEDE终极指南-95-Aria2不能下载https的解决方法
- ORA-01034 ORACLE not available
- 12306极速全自动抢票
- SaaS云服务应用的访问安全性分析