正则表达式的常见语法

目录

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

[1.1 字符类](#1.1 字符类)

[1.2 单个字符的特殊表示](#1.2 单个字符的特殊表示)

[1.3 量词表示](#1.3 量词表示)

[1.4 边界匹配](#1.4 边界匹配)

[1.5 分组与捕获](#1.5 分组与捕获)

[二 、java中的使用](#二 、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中的使用

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

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();
    }

    // 解析kv
    private 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);
        }
    }
}
相关推荐
周杰伦fans10 分钟前
数列极限的定义
java·开发语言
小白的后端世界22 分钟前
LangChain 模型初始化参数详解:从基础配置到企业级实践
java·人工智能·langchain
广州浮点FLOATLIC29 分钟前
Mentor Graphics浮动许可证管理为什么一到流片节点就失控
java·大数据·数据库·许可证管理·cad 许可证优化
Loongproxy1 小时前
大规模采集为啥用隧道代理IP?会话保持如何做到无感轮换
java·服务器·网络
杰克尼1 小时前
天机学堂面试题
java
Web极客码1 小时前
用 Python 搭建工具调用 Agent 的调试过程
java·服务器·前端
童槿顏丶1 小时前
Jenkins部署(Docker)
java·docker·jenkins
我命由我123451 小时前
Android 控件 - CardView(快速实现圆角)
android·java·java-ee·kotlin·android studio·android-studio·android runtime
2601_963869951 小时前
【计算机毕业设计】基于Java的潮牌购物网站系统的设计与实现
java·开发语言·课程设计
203号居民2 小时前
LeetCode hot 100 —560. 和为 K 的子数组
java·算法·leetcode