java 正则表达式 pattern_Java—正则表达式(Pattern类和Matcher类)

2023-11-09

正则表达式介绍

正则表达式可以用于对字符串的处理,相当于是一个匹配字符串的模板。主要包含查找、替换、分割、提取等操作;Java中通过Pattern和Matcher类提供对正则的支持。

字符处理

特殊字符处理

对于特殊字符:$、^、(、)、[、]、 {、}、 *、 +、 ?、 .、\ 、|前面都要加上\进行转义。

预定义字符

预定义字符即为正则表达式中的“通配符”,就是可以匹配多个字符的特殊字符。

预定义字符

作用

.

匹配任意字符

\d

digit,代表数字,匹配0-9中的所有数字

\D

匹配非数字

\s

space,代表空白,匹配所有空白字符(空格、换行、回车、换页、制表符等)

\S

匹配所有非空白字符

\w

word,代表单词,匹配所有单词字符,包含0-9所有数字、26个英文字母以及下划线"_"

\W

匹配所有非单词字符

三种模式的数量表示符

贪婪模式:Greedy,数量表示符默认为贪婪模式,会一直匹配下去,直到无法匹配为止。

勉强模式:Reluctant,用问号?后缀表示,只会匹配最少的字符,也被称为最小匹配模式。

占有模式: Possessive, 用加号+后缀表示。

贪婪模式

勉强模式

占用模式

作用

X?

X??

X??

X表达式出现0次或1次

X*

X*?

X*?

X表达式出现0次或多次

X+

X+?

X+?

X表达式出现1次或多次

X{n}

X{n}?

X{n}?

X表达式出现n次

X{n,}

X{n,}?

X{n,}?

X表达式最少出现n次

X{n,m}

X{n,m}?

X{n,m}?

X表达式最少出现n次,最多出现m次

方括号表达式

方括号表达式含义

作用

枚举

[abcd],表示a、b、c、d中的任意一个字符;

范围:-

[a-e],表示从a到e字母中的任意字母;可结合枚举进行使用,[a-eu-z],表示从a到e,从u到z范围内的任意字符

否定:^

[abcd],表示不是a、b、c、d中的字符;[a~e]表示不是a至f范围的字符

与运算:&&

[a-g&&[bch],求a~z和bch的交集,则结果为bc

并运算

[a-e[h-j]]

正则表达式的使用

String类常用方法

String类中的查找、替换、分割、提取等操作方法

boolean matches(String regex):判断该字符串是否匹配指定的正则表达式;

String replaceFirst(String regex, String replaceStr):将该字符串中第一个匹配regex的子串替换成replaceStr;

String replaceAll(String regex, String replaceStr):将该字符串中所有匹配regex的子串替换成replaceStr;

String[] split(String regex):以regex作为分隔符对字符串进行分割;

Matcher类常用方法

find():返回目标字符串中是否包含与Pattern匹配的子串,若传入int类型的参数,则从该int索引处向下搜索;

group():返回上一次与Pattern匹配的子串;

start():用于确定子串在目标字符串中的位置;返回上一次与Pattern匹配的子串在目标字符串中的开始位置;

end():用于确定子串在目标字符串中的位置;返回上一次与Pattern匹配的子串在目标字符串中的结束位置加1;

matches():判断整个目标字符串与Pattern是否匹配,要求整个字符串都和Pattern完全匹配时才会返回true;

lookingAt:返回目标字符串前缀与Pattern是否匹配,只需要字符串以Pattern开头就返回true;

reset():将现有的Matcher对象应用于一个新的字符序列;

Pattern对象用法

Pattern是不可变类,是正则表达式编译后在内存中的表示形式,在Java中使用正则表达式字符串必须要先被编译为Patter对象,然后再使用Pattern对象创建对应的Matcher对象。

用法

// 编译正则表达式为Pattern对象

Pattern pattern = Pattern.compile("bc*d");

// 使用编译好的Pattern对象创建Matcher对象

Matcher m = p.matcher("bccccd");

boolean b = m.matches();

System.out.println(b);

结果

true

上述步骤等价于

boolean b = Pattern.matches("bc*d", "bccccd");

System.out.println(b);

封装正则表达式工具类

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class PatternUtil {

public static Matcher getMatcher(String regex, String source) {

Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(source);

return matcher;

}

public static void main(String[] args) {

String regix = "(\\D*)(\\d+)(.*)(\\d)";

String str = "this is test 1000 $, please check! 12";

Matcher matcher = getMatcher(regix, str);

if (matcher.find()) {

System.out.println("matcher group():" + matcher.group());

System.out.println("matcher group(0): " + matcher.group(0));

System.out.println("matcher group(1):" + matcher.group(1));

System.out.println("matcher group(2):" + matcher.group(2));

System.out.println("matcher group(3):" + matcher.group(3));

System.out.println("matcher group(4):" + matcher.group(4));

} else {

System.out.println("no match");

}

}

}

运行结果

matcher group():this is test 1000 $, please check! 12

matcher group(0): this is test 1000 $, please check! 12

matcher group(1):this is test

matcher group(2):1000

matcher group(3): $, please check! 1

matcher group(4):2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 正则表达式 pattern_Java—正则表达式(Pattern类和Matcher类) 的相关文章

随机推荐

  • 如何把文件传到华为云服务器,如何把文件传到云服务器

    如何把文件传到云服务器 内容精选 换一换 本节为您介绍如何在本机使用远程登录工具MSTSC登录Windows弹性云服务器 弹性云服务器状态为 运行中 如果弹性云服务器采用密钥方式鉴权 已获取Windows弹性云服务器的密码 获取方式请参见获
  • 电脑主板跳线_电脑哥教你如何接电脑主板跳线

    主板跳线接法详解 图 作为一名新手 要真正从头组装好自己的电脑并不容易 也许你知道CPU应该插哪儿 内存应该插哪儿 但遇到一排排复杂跳线的时候 很多新手都不知道如何下手 钥匙开机其实并不神秘 还记不记得你第一次见到装电脑的时候 JS将CPU
  • stm32f407 usb cdc设备无法启动问题

    最新要做一个项目 要求基于STM32F407实现USB CDC设备 首先想到的就是直接用STM32CUBEMX工具来生成 OK 话不多说 直接上过程 RCC配置 Sys配置 USB OTG FS配置 USB DEVICE配置 时钟配置 然后
  • Windows 下安装并配置Maven

    前言 Maven 翻译为 专家 内行 是Apache下的一个纯Java开发的开源项目 Maven 是一个项目管理工具 可以对Java项目进行构建 依赖管理 Maven是基于项目对象模型 POM project object model 可以
  • 输入阻抗与偏置电流

    对于高阻信号要选用FET运放 高阻信号R2和运放上的高阻并联会影响实际R2电阻值 CMRR 共模抑制比 放大电路对差模信号的电压增益与对共模信号的电压增益之比的绝对值 因为我们要抑制零漂所以共模电压增益越小越好 而差模电压增益越大越好 所以
  • pycharm上已存在某些库,但无法调用的问题解决

    如果出现pycharm上已存在openpyxl 但无法调用的时候 就是pycharm安装openpyxl库时 安装的位置与pycharm中引用python解释器的位置不一致 导致不能调用opentyxl 所以再安装openpyxl时 把项目
  • Python 绝对简明手册

    原文 简述 1 阅读须知 文中使用 gt gt gt 作为会命令行中的输出信息的前缀 对于不清楚用用途的函数可以在解释器下面输入 help 函数名 来获取相关信息 另外 自带的文档和google也是不可少的 2 基本语法 2 1 if el
  • 简历制作讲解

    简历制作讲解 前期假想 简历如同一本书 书大体分为文本结构和文本内容 一 简历文本结构 一 个人信息 必要 二 教育背景 必要 三 自我介绍 可选 四 工作经历 五 项目经历 六 技能评价 二 简历文本内容 一 个人信息 必要 必要信息 姓
  • WebTestClient使用

    介绍 WebTestClient用于测试WebFlux服务器端点的主要入口点 它具有与WebClient非常相似的API 内部大部分调用WebClient实例 主要提供测试上下文 绑定到一个服务 WebTestClient testClie
  • 解决:参考的对象类型不支持尝试的操作。 [已退出进程,代码为 4294967295]

    问题描述 win10系统下运行wsl时候显示错误 参考的对象类型不支持尝试的操作 已退出进程 代码为 4294967295 经过个人测试解决方式为关闭网易UU当前的加速 过一会就恢复正常 不需要重启
  • MySQL架构的Server层的执行过程

    1 连接器 主要负责跟客户端建立连接 获取权限 维持和管理连接 2 查询缓存 优先在缓存中进行查询 如果查到了则直接返回 如果缓存中查询不到 在去数据库中查询 3 解析器 分析器 分析器的工作主要是对要执行的SQL语句进行词法解析 语法解析
  • 基于SpringBoot+Async注解整合多线程

    提示 本文没有使用原生的创建线程方式 默认已掌握创建线程的四种方式 全文基于SpringBoot框架 要求读者掌握SpringBoot操作 本人能力有限 如有遗漏或错误 敬请指正 谢谢 文章目录 其他文章 前言 一 为什么要使用多线程 二
  • 计算机 服装生产管理的变化,服装生产管理概述.doc

    PAGE PAGE 182 目 录 TOC o n h z HYPERLINK l To 第一章 服装生产管理概述 HYPERLINK l To 第一节 服装生产概述 HYPERLINK l To 一 服装生产企业的特点 HYPERLINK
  • Yii 2.0集成七牛云

    背景知识 七牛云就是我们常说的图床 什么是图床 可以简单理解为是一种存储图片资源的服务器 本文基于Yii2简单介绍七牛云的使用 1 首先在七牛云平台创建账户 传送门 2 登陆账户之后 点击头部菜单管理控制台 进入之后 点击左侧菜单存储对象
  • 技术岗-网上测评智力题

    A 逻辑推理 1 你让工人为你工作7天 给工人的回报是一根金条 金条平分成相连的7段 你必须在每天结束时给他们一段金条 如果只许你两次把金条弄断 你如何给你 的工人付费 2 请把一盒蛋糕切成8份 分给8个人 但蛋糕盒里还必须留有一份 3 小
  • Qt Plugin

    问题 创建 Qt 插件 方法 1 QML 插件 1 qmldir plugin dll plugin qml 位于同一目录 目录名和模块名相同 2 错误列表如下 no dir no qmldir module module is not i
  • CUDA C编程3 - 并行性衡量指标

    系列文章目录 文章目录 系列文章目录 前言 一 CUDA C并行性衡量指标介绍 二 案例介绍 1 案例说明 2 案例实现 3 结果分析 总结 参考资料 前言 CUDA编程 就是利用GPU设备的并行计算能力实现程序的高速执行 CUDA内核函数
  • 相关系数R-判定系数R方的matlab实现

    相关系数 判定系数 相关系数是最早由统计学家卡尔 皮尔逊设计的统计指标 是研究变量之间线性相关程度的量 一般用字母 r 表示 由于研究对象的不同 相关系数有多种定义方式 较为常用的是皮尔逊相关系数 相关表和相关图可反映两个变量之间的相互关系
  • Table表格(antd-design组件库)简单使用

    1 Table表格 展示行列数据 2 何时使用 当有大量结构化的数据需要展现时 当需要对数据进行排序 搜索 分页 自定义操作等复杂行为时 组件代码来自 表格 Table Ant Design 3 本地验证前的准备 参考文章 react项目
  • java 正则表达式 pattern_Java—正则表达式(Pattern类和Matcher类)

    正则表达式介绍 正则表达式可以用于对字符串的处理 相当于是一个匹配字符串的模板 主要包含查找 替换 分割 提取等操作 Java中通过Pattern和Matcher类提供对正则的支持 字符处理 特殊字符处理 对于特殊字符 前面都要加上 进行转