乱谈府

乱谈府

正则表达式快速参考

340
2020-12-05
正则表达式快速参考

一些常用的正则表达式

首先放上两个很有用的参考网站:

  1. RegexOne:涵盖了基本的正则表达式的用法,我就是通过这个网站学习的

  2. Regex101:在线匹配正则表达式的网站,炒鸡方便

实际比较重要的几个:中括号[0-9a-z]、小括号()分组、大括号{1,4}个数、^前匹配、$后匹配、|或逻辑。

以下有一个偷来的图:

表达式整理

基于RegexOne网站:

数字匹配

方法:\d

字符\d可以用于替换从0到9的任何数字。前面的斜杠将它与简单的d字符区分开来,并表明它是一个元字符(metacharacter)。

万能匹配

方法:.

. 可以理解为通配符,可以匹配任何单个字符(字母、数字、空格等)。

如果想匹配真正的.字符,需要在前面加上斜杠以表示区别,即**.**

匹配特定字符

方法:[abc]
[] 可以匹配特定的字符。例如:[abc]将只匹配一个字母a, b,或c,和无。

排除特定字符

方法:[^]

在方括号中使用^(hat)可以排除特定字符。例如 [ ^abc]可以匹配除了a,b,c外的任意单个字符。

特定范围内的字符

方法:[0-6], [a-e], [M-W], \w

使用破折号“-”表示范围。例如[0-6]只匹配从0到6的任何单个数字字符,其他字符不匹配。同样地,结合^,[ ^n-p]将只匹配除字母n到p之外的任何单个字符。

其中**\w为元字符,等同于[A-Za-z0-9_]\W等同于[^A-Za-z0-9_]**

匹配多个字符

方法:,{m,n}

使用花括号{}匹配多次结果。例如:a{3}精确匹配a三次。a{1,3}将匹配a1到3次。.{2,6}将匹配任意字符2到6次。

泛多次匹配

方法:*,+

使用Kleene Star “*”匹配0或更多次。

例如\d*表示匹配任意个数的数字。

使用Kleene Plus“+”匹配1或更多次。

例如\d+表示至少有一个数字类型的输入。[abc]+表示1个或多个任意a,b,c字符。

字符可选项

方法:

使用?表示此项可以作为可选项。例如,ab?c可以匹配“abc”或“ac”,b是作为一个可选项存在的。

同样,要想匹配字符?需要加上斜杠,即?

匹配空格

方法:\s

通常有以下几种空格情况:

  1. 空格( )
  2. 制表符(\t)
  3. 新行(\n)
  4. 回车符(\r)

它们都可以通过**\s**进行匹配,其可以匹配任意特定的空白。实际等价于 [ \f\n\r\t\v]。

\S则匹配任何非空白字符,等价于 [ ^ \f\n\r\t\v]。

匹配开始/结束特定字符

方法:^, $

使用匹配开始时的特定字符。
例如
success来匹配仅仅以success开始的行。

使用$匹配结束时的特定附。

例如love$来匹配以love为结尾的字段。

注意这里的^与上面中括号的[hat符号]表示的含义不同,注意区分。

$还可以作为替换的指代,详细看此文:多种实际使用场景,正则表达式带来丰富可能性

匹配一个组

方法:()

使用()匹配一组特定的字符。例如:^(IMG\d+)\ .png$,其可以将前面部分作为一个整体进行匹配捕获。

同样()是可以进行嵌套的,例如:^(IMG(\d+))\ .png$,前面部分又分成两个整体进行匹配。

()与上面方法结合使用可以带来更好的效果。例如(\d{3})

或逻辑

方法:|

在使用组时,可以用|匹配不同组的字符。例如([cb]ats*|[dh]ogs?),可以匹配cats,bats,dogs,hogs。

不错的例子参考

  1. 正则表达式总结
  2. 多种实际使用场景,正则表达式带来丰富可能性
  3. 菜鸟教程Python 正则表达式
  4. Python正则表达式,这一篇就够了!