正则表达式的常见语法

ops/2024/10/21 6:13:08/

      

目录

一、基本的正则表达式语法

1.1 字符类

1.2 单个字符的特殊表示

1.3 量词表示

 1.4 边界匹配

1.5 分组与捕获

java%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8-toc" style="margin-left:0px;"> 二 、java中的使用


  在Java中使用正则表达式进行字符串匹配可以说是一个很重要的技能,尤其对于需要进行文本处理或者字符替换的程序来说,更是必不可少的技术手段。

一、基本的正则表达式语法

1.1 字符类

字符类指的是可以匹配单个字符的内容,在正则表达式中通常用中括号“[]”表示,例如

javascript">[abc]     //匹配a或b或c
[a-zA-Z]  //匹配任意大小写字母

1.2 单个字符的特殊表示

 在正则表达式中,一些字符具有特殊含义,例如“.”表示任意一个字符,“\d”表示任意一个数字等,常见的特殊表示符号包括:

javascript">\d    //匹配数字
\D    //匹配非数字
\w    //匹配字母、数字或下划线
\W    //匹配非字母、数字或下划线
\s    //匹配空白字符(空格、制表符、换行符等)
\S    //匹配非空白字符
.     //匹配任意字符

1.3 量词表示

量词指的是可以匹配多个字符的内容,在正则表达式中通常用花括号“{}”表示,例如:

javascript">a{2}      //匹配两个连续的a
a{3,5}    //匹配三到五个连续的a

 常见的量词包括:

javascript">*    //匹配0到多次
+    //匹配1到多次
?    //匹配0或1次
{n}  //匹配n次
{n,m}//匹配n到m次
{n,} //匹配n到多次

 1.4 边界匹配

边界匹配指的是匹配字符串开始或结束位置的内容,在正则表达式中通常用圆括号“()”表示,例如:

javascript">^abc  //匹配以abc开头的字符串
abc$  //匹配以abc结尾的字符串

1.5 分组与捕获

在正则表达式中,可以使用圆括号“()”来分组,还可以使用反斜杠符号“\”来捕获匹配的内容,例如:

javascript">(a)(b)          //分组匹配ab
(\d{4})-(\d{2}) //捕获匹配日期格式(例如:2023-06)

java%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8"> 二 、java中的使用

我们直接通过几个简单的列子来看下如何使用

java">package com.cjian.pattern;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @Author: cjian* @Date: 2024/4/23 19:42* @Des:*/
public class Demo {public static void main(String[] args) {test2();}// 解析kvprivate static void test2(){Pattern pattern = Pattern.compile("(\\S+)=(\\S+)");Matcher matcher = pattern.matcher("k1=v1 k2=v2 k3=3 k4=five");while(matcher.find()){// group()方法可以返回与前一次匹配结果相同的字符串String key = matcher.group(1);String value = matcher.group(2);System.out.println(key+"->"+value);}}// 解析日期private static void test1() {String regex = "\\d{4}-\\d{2}-\\d{2}";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher("2024-04-23 20:16:30 ");if(matcher.find()){// group()方法可以返回与前一次匹配结果相同的字符串String matchedStr = matcher.group();System.out.println(matchedStr);}}
}


http://www.ppmy.cn/ops/25408.html

相关文章

商城数据库88张表结构(十二)

DDL 45.商城信息表 CREATE TABLE wang_messages (id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增id,msgType tinyint(4) NOT NULL DEFAULT 0 COMMENT 消息类型(0:后台手工发送的消息 1:系统自动发的消息),sendUserid int(11) NOT NULL DEFAULT 0 COMMENT 发送者id,receiveU…

外观模式【结构型模式C++】

1.概述 外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。 2.结构   外观角色(Facade):为多个子系统对外提供一个共同的接口,知道哪些子系统负责处理请求,将客户端的请…

再谈“协议”

1.认识协议 之前我们使用TCP的方式实现了一个服务器,而TCP是面向字节流的,而UDP是面向数据报的,接下来通过一个例子区分两种的区别。 UDP面向数据报:就如同发快递,你发多少个快递,对面就收到多少个快递&am…

(学习日记)2024.04.29:UCOSIII第五十三节:User文件夹函数概览(uC-LIB文件夹)第三部分

之前的章节都是针对某个或某些知识点进行的专项讲解,重点在功能和代码解释。 回到最初开始学μC/OS-III系统时,当时就定下了一个目标,不仅要读懂,还要读透,改造成更适合中国宝宝体质的使用方式。在学完野火的教程后,经过几经思考,最后决定自己锦上添花,再续上几章。 这…

windows rabbitMq安装

一、Erlang 环境准备 下载安装包 跟我们跑java项目,要装jdk类似。rabbitMQ是基于Erlang开发的,因此安装rabbitMQ服务器之前,需要先安装Erlang环境。 官网直接下载windows直装版本:https://www.erlang.org/downloads 无脑安装&a…

【网站项目】个人需求和地域特色的外卖推荐系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

深入理解Java消息中间件-性能优化和调优

性能优化和调优是构建高性能系统的重要环节,这对于Apache Kafka这样的消息中间件尤为重要。下面我们将介绍一些具体的性能优化和调优操作方式,以帮助你更好地利用Kafka来构建高性能的消息系统。 合理配置Kafka集群:合理配置Kafka集群的节点数…

同一用户使用多个用户名对服务器或共享资源进行多个连接不允许

异常:使用 net use 指令 访问远程目录,提示错误 “同一用户使用多个用户名对服务器或共享资源进行多个连接 不允许。断开之前与服务器或共享资源的所有连接,然后 请再试一次。” 分析: 分析这可能是多个用户 请求这个目录&#x…