正则表达式的常见语法

      

目录

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

1.1 字符类

1.2 单个字符的特殊表示

1.3 量词表示

 1.4 边界匹配

1.5 分组与捕获

 二 、java中的使用


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

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

1.1 字符类

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

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

1.2 单个字符的特殊表示

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

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

1.3 量词表示

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

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

 常见的量词包括:

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

 1.4 边界匹配

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

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

1.5 分组与捕获

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

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

 二 、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);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/569667.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安全AI未来 | C3安全大会 · 2024,数据驱动 AI原生

数字为时代变革注入动力,AI为重塑社会文明带来原力。数智浪潮中,我们见证着时代跃迁的巨变,面临着适变、应变、驭变的挑战。 数字驱动、AI原生。数字的流动不仅承载着信息,更将激活未来的无限价值;AI,不…

为什么要写技术方案?

技术方案是为研究解决各类技术问题,有针对性,系统性的提出的方法、应对措施及相关对策。技术方案设计是一个技术开发者必备的能力,特别是对于高级、资深、架构师等角色。技术方案设计不仅能够帮助我们明确需求,规划架构&#xff0…

【数据库】三、数据库SQL语言命令(基础从入门到入土)

【全文两万多字,涵盖大部分常见情况,建议点赞收藏】 目录 文章目录 目录安装SQL语言1.使用2.DATABASE查看所有库新建数据库修改数据库删除数据库连接数据库 3.TABLE创建表查看库所有表删除表查看表信息重命名表修改表字段(列)表中…

自动批量将阿里云盘文件发布成WordPress文章脚本源码(以RiPro主题为例含付费信息下载地址SEO等自动设置)源码

背景 很多资源下载站,付费资源下载站,付费内容查看等都可以用WordPress站点发布内容,这些站点一般会基于一个主题,付费信息作为文章附属的信息发布,底层存储在WP表里,比如日主题,子比主题等。 …

js的算法-插入排序(直接插入排序)

插入排序 插入排序是一种简单直接的排序方法,其基本思想是每次将一个待排序的记录按其关键字大小插入到前面已经排好序的子序列,直到全部记录插入完成。由插入排序的思想可以引申出三个重要的排序算法: 直接插入排序、折半插入排序和希尔排序…

一份本金 能得两份利息?

构建完善的量化交易策略,需要了解多种交易标的。有的产品在特殊时间可以产生超额收益。 1天期的国债逆回购的手续费为万0.1。 看似较低,因为每笔最小手续费是0.1元,如果投资者买入的金额较小(比如小于1w),…

bugku ezbypass

bugku ezbypass 1.代码审计 2.题目代码如下所示 <?php error_reporting(0); highlight_file(__FILE__);if (isset($_POST[code])) {$code $_POST[code];if (strlen($code) < 105){if (is_string($code)) {if (!preg_match("/[a-zA-Z0-9#%^&*:{}\-<\?>…

怎样用PHP语言实现远程控制三路开关

怎样用PHP语言实现远程控制三路开关呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现控制三路开关&#xff0c;三路开关可控制三路照明、排风扇等电器。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称厂商1智能WiFi墙…

政企单位内外网数据交互,如何保障安全性和合规性?

政府内外网隔离是一种网络安全措施&#xff0c;旨在保护政府内部网络的安全性和保密性。根据国家法律要求&#xff0c;涉及国家秘密的计算机信息系统与公共网络之间必须实行物理隔离。这意味着这些系统应该被完全隔离开来&#xff0c;以防止任何未经授权的访问或数据泄露。其次…

Linux服务器安装谷歌浏览器

当我们使用自动化的时候&#xff0c;还想要将它部署到服务器上那么我们就需要安装谷歌或者其他浏览器&#xff0c;这里是以谷歌浏览器为例子 首先就是你的有安装包 我们到官网下载&#xff1a;https://www.google.cn/intl/zh-CN/chrome/&#xff0c;需要科学上网 进入官网之…

Python蜘蛛侠

目录 写在前面 蜘蛛侠 编写代码 代码分析 更多精彩 写在后面 写在前面 本期小编给大家推荐一个酷酷的Python蜘蛛侠&#xff0c;一起来看看叭~ 蜘蛛侠 蜘蛛侠&#xff08;Spider-Man&#xff09;是美国漫威漫画宇宙中的一位标志性人物&#xff0c;由传奇创作者斯坦李与艺…

工信部政策要求试点城市20%资金奖励中小企业用SaaS上云转型数字化

随着数字经济的不断发展&#xff0c;中小企业也迎来了前所未有的机遇和挑战。为了持续推动中小企业数字化转型&#xff0c;工信部出台了一项新政策&#xff0c;主要通过资金奖励的方式&#xff0c;鼓励中小企业采纳软件即服务&#xff08;SaaS&#xff09;模式&#xff0c;实现…

每日OJ题_BFS解决拓扑排序①_力扣207. 课程表

目录 拓扑排序和图的介绍 ①力扣207. 课程表 解析代码 拓扑排序和图的介绍 拓扑排序简单来说就是找到做事情的先后顺序&#xff08;拓扑排序的结果可能不是唯一的&#xff09;。 学习拓扑排序前先简单学习图的基本概念&#xff1a; 图是由顶点集合及顶点间的关系组成的一种…

Pytorch常用的函数(八)常见优化器SGD,Adagrad,RMSprop,Adam,AdamW总结

Pytorch常用的函数(八)常见优化器SGD,Adagrad,RMSprop,Adam,AdamW总结 在深度学习中&#xff0c;优化器的目标是通过调整模型的参数&#xff0c;最小化&#xff08;或最大化&#xff09;一个损失函数。 优化器使用梯度下降等迭代方法来更新模型的参数&#xff0c;以使损失函数…

windows系统实现postgresql数据库定时备份

在windows系统中&#xff0c;大家通常可能会遇到手动备份数据库、周期性的执行脚本等情况。如果每次手动去做的话不免有些麻烦&#xff0c;而且容易忘记。用过Linux的同学都知道用crontab就可以定时调用shell脚本来实现定时任务的执行&#xff0c;那么在windows系统怎么实现呢&…

IMU用于评估驾驶中颈部受伤风险

近日&#xff0c;一支由西班牙和意大利科研人员组成的联合团队成功研发了一种创新车载监控系统&#xff0c;该系统巧妙结合了IMU和红外激光传感器技术&#xff0c;旨在深入研究并有效评估驾驶员在紧急制动情境下颈部受伤的风险。 实验中&#xff0c;科研团队采用了一款低成本的…

最新国内敏捷调研报告:2023中国企业敏捷实践白皮书

在人工智能技术飞速发展&#xff0c;组织面临的复杂性和多变性不断加剧的背景下&#xff0c;《2023中国企业敏捷实践白皮书》通过广泛的调查&#xff0c;洞察剧变之下&#xff0c;谁在逆流而上&#xff0c;如何逆流而上。 敏捷作为适应市场变化的关键策略&#xff0c;已被越来越…

【C++】项目级的组织结构与Cmake编译

文章目录 C项目级的组织结构与Cmake编译分文件编写程序C项目级的组织结构Cmake编译 C项目级的组织结构与Cmake编译 分文件编写程序 (1) 创建后缀名为.h的头文件max.h&#xff0c;并在其中写函数的声明 #include<iostream> using namespace std; int max(int a, int b)…

Redux 状态持久化之 redux-persist 使用示例

同vuex一样&#xff0c;redux中的状态会在刷新浏览器后状态又恢复到初始状态&#xff0c;有些数据想在浏览器刷新后仍然是在最新的状态&#xff0c;不会丢失&#xff0c;就需要借助一些插件实现。本文通过 redux-persist 插件来实现Redux状态的持久化。 下面使用 redux-persis…

error while loading shared libraries: libaio.so.1: wrong ELF class: ELFCLASS32

这个错误的意思是编译对象需要32位的libaio库 centos版本执行以下命令检查系统有哪些libaio的版本 yum list libaio 如图&#xff0c;有两个版本&#xff0c;将两个版本都安装一下 yum install libaio.x86_64 再编译&#xff0c;成功
最新文章