ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

正则表达式速览

2021-06-13 09:33:57  阅读:221  来源: 互联网

标签:表示 字符 匹配 正则表达式 补集 速览 任意


在脚本中使用正则表达式可以很方便的对于字符串进行处理,利用不同的组合可以完成很强大的工作,然而一大堆符号看起来很复杂,实际上却很简单。

看下面负责完成匹配的多行重复

^\(.*\)\(\n\1\)\+$

在考虑到正则表达式时,要想到三个问题

  • 匹配啥字符?
  • 匹配数量?
  • 匹配位置?

匹配啥字符?

正则表达式提供了一种称作元字符的东西,这个就是要匹配的模式。

字符描述等价
[]匹配[]内的任意字符,-表示范围
\d匹配0-9[0-9]
\x匹配16进制[0-9a-fA-F]
\w匹配单词字母[a-zA-Z]
\s匹配空白字符[\t]
^用在[]内表示匹配除了[]内字符以外的字符[]的补集
\D\d 匹配的补集[^0-9]
\X\x 匹配的补集[^0-9a-fA-F]
\W\w匹配的补集[^a-zA-Z]
\S\s 匹配的补集[^\t]
\t匹配tab字符
.匹配任意一个字符

很容易记住\d\x\w对应于数字、十六进制、字母,然而它们对应的大写就是它们的补集

匹配数量?

符号描述
*0-任意个
\+1-任意个
\?0-1个
\{n,m}n-m个
\{n}n个
\{n,}n-任意个
\{,n}0-n个

匹配位置?

符号描述
^匹配行首
$匹配行尾
\<匹配词首
\>匹配词尾

额外的补充

  • 特殊字符需要添加\来匹配对应的字符

  • \(内容1\) \(内容2\) ,内容1、2相当于一个变量,后续可用\1、\2来表示内容的具体含义

例子

1

^\(.*\)\(\n\1\)\+$
  • ^$限定了行尾

  • \(.*\) 表示.*是一个变量,匹配任意多个字符,*对.作用表示匹配.这种字符的任意个

  • (\n\1)表示是回车和前面一致的内容,\1就是\(.*\)

  • \+ 作用于(\n\1),表示1-任意个的(\n\1)

合起来的意思就是匹配多个重复行。注意匹配数量总是作用前一个描述的事情

2

\(a\+\)[^a]\+\1
  • \(a+\)表示匹配任意个啊

  • [^a]除了a以外的字符

  • \+ 作用[^a],表示1-任意个的[^a]

  • \1表示\(a+\)

合起来的意思就是匹配头部和尾部的a字符数量相等,中间字符任意的字符串。

例如aabaa,acccca,但是aaba字符串不匹配,头尾的a不相等。

标签:表示,字符,匹配,正则表达式,补集,速览,任意
来源: https://blog.csdn.net/qq_31568011/article/details/117868028

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有