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(正则表达式)相关推荐

  1. Java学习-17 正则表达式简述

    Java学习-17 正则表达式 1.什么是正则表达式? 正则表达式是构成搜索模式(search pattern)的字符序列. 当您搜索文本中的数据时,您可使用搜索模式来描述您搜索的内容. 正则表达式可 ...

  2. Java学习笔记——正则表达式(Pattern类、Matcher类和PatternSyntaxException)

    目录 一.Pattern类 (一)Pattern 介绍 (二)Pattern 方法 二.Matcher类 (一)Matcher 类介绍 (二)Matcher 类方法 三.PatternSyntaxEx ...

  3. Java学习之正则表达式篇

    文章目录 快速入门 正则表达式基本语法 1. 字符匹配符 2. 选择匹配符 3. 限定符 4. 定位符 5. 分组组合 .反向引用符 6.特殊字符 三个常用类 Pattern Matcher Patt ...

  4. Java学习笔记-正则表达式的模式匹配

    正则表达式(Regex)为被匹配的文本模式提供了简明扼要的规范. 关于正则表达式的语法,可以参考相关书籍和这个网址:http://edu.yesky.com/edupxpt/18/2143018.sh ...

  5. JAVA学习 API_day02(正则表达式, StringBuider, 包装类, Collection集合类接口)

    正则表达式, 包装类, Collection集合类接口 1.正则表达式 2.StringBuider类 3.包装类 4.Collection接口 1.正则表达式 public final class ...

  6. Java学习笔记--StringTokenizer的使用

    2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...

  7. java js 正则表达式_如何在JavaScript与Java中使用正则表达式

    如何在JavaScript与Java中使用正则表达式 发布时间:2021-02-11 13:16:01 来源:亿速云 阅读:69 作者:Leah 如何在JavaScript与Java中使用正则表达式? ...

  8. java 中的正则表达式_Java中的正则表达式–软介绍

    java 中的正则表达式 正则表达式是一种可以应用于文本(Java中的String)的模式. Java提供了java.util.regex包,用于与正则表达式进行模式匹配. Java正则表达式与Per ...

  9. Java中的正则表达式–软介绍

    正则表达式是一种可以应用于文本(Java中的String)的模式. Java提供了java.util.regex包,用于与正则表达式进行模式匹配. Java正则表达式与Perl编程语言非常相似,并且非 ...

最新文章

  1. TFS 2010 使用手册(二)项目集合与项目
  2. Android官方开发文档Training系列课程中文版:调用相机之简单摄像
  3. 设计模式之观察者模式在Listview中的应用
  4. 货物被偷把沃尔玛逼急了 将在逾1000家门店安装AI相机
  5. [转载]jquery ajax/post/get 传参数给 mvc的action
  6. risksystem_环境风险评价系统(RiskSystem)
  7. Python读取PDF文档并翻译
  8. 搭建STM32开发环境——STM32CubeMX并配合Keil5重写跑马灯程序
  9. C语言程序设计基础(01)—— 计算机与程序设计基础
  10. Win7 蓝牙耳机无法使用
  11. opensuse安装搜狗输入法
  12. PLC系统的选型以及应用方法
  13. c语言打印字符图案,C语言-打印字符图形.doc
  14. linux nodejs 502错误,node.js – NPM安装失败,出现502错误
  15. word中尾注分隔符删除后还有一个回车符怎么删
  16. 厚朴汇智李艳华:如何培养优秀猎头顾问?
  17. 【LEDE】树莓派上玩LEDE终极指南-95-Aria2不能下载https的解决方法
  18. ORA-01034 ORACLE not available
  19. 12306极速全自动抢票
  20. SaaS云服务应用的访问安全性分析

热门文章

  1. ExeCryptor脱壳脚本
  2. 强化学习在计算机视觉领域的应用
  3. 经营一个站群,该如何控制成本呢?【关于域名,空间】
  4. 记录我的java之路——day26(周更)
  5. kaliarp欺骗注入_利用 Kali Linux 进行 Arp 欺骗,实现局域网断网攻击
  6. Ubuntu下jperf的安装
  7. 解决vista中IE速度慢或经常不响应、死掉的问题
  8. 初入坑GWAS,学习plink还是TASSEL?
  9. 一步一步学区块链(5)智能合约
  10. ANSYS学习3——加载求解