首页 > 其他分享 >用正则实现复杂的查找和替换操作

用正则实现复杂的查找和替换操作

时间:2023-08-20 17:35:28浏览次数:26  
标签:第几个 括号 正则 查找 分组 子组 编号 替换

括号在正则中的功能就是用于分组。简单来理解就是,由多个元字符组成某个部分,应该被看成一个整体的时候,可以用括号括起来表示一个整体,这是括号的一个重要功能。其实用括号括起来还有另外一个作用,那就是“复用”。

那分组和编号的规则是怎样的呢?其实很简单,用一句话来说就是,第几个括号就是第几个分组。

这里有个时间格式 2020-05-10 20:23:05。假设我们想要使用正则提取出里面的日期和时间。

用正则实现复杂的查找和替换操作_正则

将日期和时间都括号括起来。这个正则中一共有两个分组,日期是第 1 个,时间是第 2 个。

在括号里面的会保存成子组,但有些情况下,你可能只想用括号将某些部分看成一个整体,后续不用再用它,类似这种情况,在实际使用时,是没必要保存子组的。这时我们可以在括号里面使用 ?: 不保存子组。

那到底啥是不保存子组呢?可以理解成,括号只用于归组,把某个部分当成“单个元素”,不分配编号,后面不会再进行这部分的引用。

用正则实现复杂的查找和替换操作_正则_02

用正则实现复杂的查找和替换操作_正则_03

在括号嵌套的情况里,要看某个括号里面的内容是第几个分组怎么办?我们只需要数左括号(开括号)是第几个,就可以确定是第几个子组。 

用正则实现复杂的查找和替换操作_正则_04

日期分组编号是 1,时间分组编号是 5,年月日对应的分组编号分别是 2,3,4,时分秒的分组编号分别是 6,7,8。

在知道了分组引用的编号 (number)后,大部分情况下,我们就可以使用 “反斜扛 + 编号”,即 \number 的方式来进行引用,而 JavaScript 中是通过$编号来引用,如$1。

用正则实现复杂的查找和替换操作_正则_05


 


标签:第几个,括号,正则,查找,分组,子组,编号,替换
From: https://blog.51cto.com/key3feng/7162493

相关文章

  • 正则表达式:贪婪与非贪婪模式
    正则中的三种模式,贪婪匹配、非贪婪匹配和独占模式。在这6种元字符中,我们可以用{m,n}来表示(*)(+)(?)这3种元字符:贪婪模式,简单说就是尽可能进行最长匹配。非贪婪模式呢,则会尽可能进行最短匹配。正是这两种模式产生了不同的匹配结果。贪婪匹配(Greedy)在正则中,表示次数的量词默认是贪......
  • python 小案例正则表达式
    正则表达式是一种用于匹配、查找和替换文本的强大工具。在提取网页中的目标数据时,可以使用正则表达式来搜索和匹配特定模式的文本。以下是一个使用正则表达式提取网页中的目标数据的示例代码:importre#网页源代码html="""<divclass="title">正则表达式教程</div><divc......
  • Linux 系统替换字符串常用命令
    概述在Linux系统中有时候我们需要替换某个很长的字符串或者修改某个配置参数,有些文件又隐藏目录比较深,有些场景也需要在一个目录下批量去修改文件,那应该怎么高效,快速的去完成修改呢?下面记录一下本人实施过程中的一些方法,做个备忘手稿分享以备随时查看。系统平台CentOSLinux7第......
  • js在正则中使用变量
     将[]换行替换成需要上传的字段 ......
  • 正则表达式 过滤文本
    5.正则表达式过滤文本REGEXP:RegularExpressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。正则表达式被很多......
  • 第二十一节 API(正则表达式)
    正则表达式1.1正则表达式的概念及演示在Java中,我们经常需要验证一些字符串,例如:年龄必须是2位的数字、用户名必须是8位长度而且只能包含大小写字母、数字等。正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则,我们可以验证用户输入的字符串是否匹配这个规则。先......
  • 记忆正则表达式的基本元件
    正则常见的三种功能,它们分别是:校验数据的有效性、查找符合要求的文本以及对文本进行切割和替换等操作。正则表达式,简单地说就是描述字符串的规则。在正则中,普通字符表示的还是原来的意思,比如字符a,它可以匹配“Hanmeimeiisagirl”中的H之后的a,也可以匹配is之后的a,这个和我......
  • iwebsec-sql注入 12 等价函数替换过滤
    01、题目分析依旧是对等号进行了过滤,那么可以尝试一些等价值的内容来替换等号02、手工注入依旧是对等号进行了过滤,那么可以尝试一些等价值的内容来替换等号,比如like,rlike,regexp替换,id=1可以用idlike1以及id>0andid<2以及!(id<>1)进行绕过--查询行数?id=1order......
  • 正则表达式工具
    packagecom.brainshare.common.utils;importjava.util.regex.Matcher;importjava.util.regex.Pattern;/***正则表达式工具*/publicclassRegexUtil{privatestaticfinalStringREGEX_ID_CARD="(^\\d{15}$)|(^\\d{17}([0-9]|X)$)";/***身份证号校验......
  • 开源.NetCore通用工具库Xmtool使用连载 - 正则表达式篇
    【Github源码】《上一篇》详细介绍了Xmtool工具库中的日期时间类库,今天我们继续为大家介绍其中的正则表达式类库。在日常的软件开发过程中,每个人都会或多或少的遇到各种各样需要校验数据格式的需求,有些格式是和具体业务逻辑相关;而有些格式是业界标准,在任何系统和功能中都一致通用......