首页 > 其他分享 >正则表达式从入门到分析

正则表达式从入门到分析

时间:2022-10-14 20:56:35浏览次数:47  
标签:分析 字符 匹配 入门 正则表达式 重复 分组 Word 任意

简单模糊查询 hi

可以匹配hi,HI,Hi,hI这四种情况中的任意一种。包含hi这两个连续的字符,比如him,history,high等等

精确地查找hi这个单词

\bhi\b

单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词

\bhi\b.*\bLucy\b

解释: . 表示除了换行符以外的任意字符

​ * 表示内容可以是任意数量的(扩展+重复一次或更多次 ?重复零次或一次)

​ .*连在一起就意味着任意数量的不包含换行的字符

匹配以0开头,然后是两个数字,然后是一个连字号"-",最后是8个数字

方式一 0\d\d-\d\d\d\d\d\d\d\d

解释:\d匹配一个数字

方式二 0\d{2}-\d{8}

解释:{2}({8})的意思是前面\d必须连续重复匹配的次数

扩展:{5,12}则是重复的次数不能少于5次,不能多于12次

​ {n,}重复n次或更多次

小结:

\b . 等称为元字符,常用的元字符如下表

常用的元字符

代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字 \W 用大写表示相反含义 匹配不是字母或数字或下划线或汉字
\s 匹配任意的空白符 \S 用大写表示相反含义 匹配不是空白符
\d 匹配数字 \D用大写表示相反含义 匹配任意非数字的字符
\b 匹配单词的开始或结束 \B用大写表示相反含义 匹配不是单词开头或结束的位置
^ 匹配字符串的开始 类似 \b的开始
$ 匹配字符串的结束 类似\b的结束

注意:如果要查找元字符本身的话,如查找字符串中是否包含$ ,需要加\转义,否则会被解释成匹配字符串的结束

如  \b\$.\b   匹配的为$开头的字符串并以除换行符以外的任意字符结尾

其他需要转义的

匹配双引号"\"
匹配单引号''

{2} {5,12}等称为限定符,指定可允许匹配的次数,常用的限定符如下表

​ 常用的限定符

代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

​ 重叠限定符的含义

代码/语法 说明
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复

扩展:对一段整体加限定符,把整体括号起来即可,括号起来的内容叫分组

\b(\d\s){10}000\b  数字加空白字符,整体重复10次,最后拼000  

匹配自定义字符[aeiou]

可以匹配aeiou中任何一个字符

其他[.?!] 匹配标点符号(.或?或!)。

扩展:[0-9] 匹配0到9中的一个数字,含意与\d就是完全一致的

​ [a-z0-9A-Z_] 可以匹配a到z、0到9、A到Z

  • 用^匹配相反含义:
[^aeiou]   匹配除了aeiou这几个字母以外的任意字符

或条件 |

\d{5}-\d{4}|\d{5}

解释:从左到右,先判断\d{5}-\d{4} 是否满足,满足就不判断后面

在其他位置引用分组内容

\b(\w+)\b\s+\1\b

解释:对于分组(\w+)被引用到\1重复使用了,所以可以匹配到结果如 go go 或者kitty kitty等。

​ 1代表从左到右的分组的顺序

扩展:可以自定义分组的名称

方式一:

?<Word>  定义分组名为Word
\k<Word>  引用分组Word

方式二:

?'Word' 定义分组名为Word
\k'Word'  引用分组Word

所以例子可以写成

\b(?<Word>\w+)\b\s+\k<Word>\b

排除分组内容在匹配

\b\w+(?=ing\b)

解释:开头匹配为\w+ 排除结尾并且是ing的

​ 这种格式为(?=exp),对结尾内容生效

扩展一 :(?<=exp) ,对开头部分生效,如

(?<=\bre)\w+\b 排除开头并且是re的,后面满足\w+

一起使用如:

(?<=\s)\d+(?=\s) 排除开头并且是空白字符的 ,中间多个数字,排除结尾并且是空白字符的

扩展二:(?!exp) , 排除任意位置值,并且不占用一个匹配

\b\wq(?!u)\w\b 排除q后为u的值,并且这个值也满足\w

\b\w*q[^u]\w*\b   排除q后为u的值,但是这个值下一个值去匹配\w  ,用这种会占用一个匹配

标签:分析,字符,匹配,入门,正则表达式,重复,分组,Word,任意
From: https://www.cnblogs.com/yao-zhen-peng/p/16792972.html

相关文章

  • delphi 正则表达式的使用方法
    本文写于2022-10-14,D版本10.3.3引用单元:uses System.RegularExpressions1、TRegEx.Match方法Match()方法总是获取满足条件的第一个匹配,而不关心满足条件的匹配有多......
  • B-神经网络模型复杂度分析
    目录结构一,模型计算量分析二,模型参数量分析三,一些概念四,参考资料前言现阶段的轻量级模型MobileNet/ShuffleNet系列、CSPNet、RepVGG、VoVNet等都必须依赖于于具......
  • Elasticsearch——Query DSL语法入门
    QueryDSL入门官网介绍链接: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.htmlsearchapi就是对存储在elasticsearch(以下简称es)中的数......
  • HTML入门
    1.熟悉一个完整的HTML页面     <!DOCTYPEhtml>:声明是HTML5文档(声明是不区分大小写的)<html>:是HTML页面的根元素<head>:包含文档的元数据,也可以理解为规则格式,......
  • Mysql基础第十二天,用正则表达式进行搜索
    基本字符匹配selectpro_namefromproductswhereprod_nameregexp'ee';//基本字符匹配selectpro_namefromproductswhereprod_nameregexp'.00';//含有00,前......
  • Elasticsearch——search搜索入门
    Search的运行机制Search执行的时候分为两个运行步骤:Query阶段Fetch阶段Query阶段Fetch阶段相关性算分问题相关性算分在shard与shard之间是相互独立的,也就意味着......
  • Python数据分析,办公自动化,数据选取
    一张表中通常会包含很多字段,造成数据冗余,在做数据分析时,我们仅需要提取数据分析所需要的字段,这里就需要用到数据选取的知识点。本文构建数据表做数据索引,然后对数据内容进行......
  • Python数据分析,办公自动化,数据拼接与连接
    日常数据分析中,需要将多个表进行合并,包括表的纵向拼接以及表的横向连接,将多个小表组合成为一张大表,使用的方法有Excel中的Vlookup函数法,SQL中UNION和JOIN的方法,以及Pandas模......
  • Python数据分析,办公自动化,数据分组与透视
    数据分组是对相同类别的数据进行汇总,而数据透视表是通过对行或列的不同组合对数据进行汇总,所使用的汇总方法有求和、计数、平均值、标准差等,本文使用Python对数据进行数据分......
  • Python数据分析,办公自动化,数据预处理
    数据分析时,首先应对数据进行清洗,这里将数据清洗分为重复值处理、缺失值处理、异常值处理三个部分,重复值处理可删除重复的字段,缺失值处理可以用线性插值、填充为0或用均值填......