正则表达式速览

2021/6/13 10:26:14

本文主要是介绍正则表达式速览,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

^\(.*\)\(\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不相等。



这篇关于正则表达式速览的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程