正则表达式

几个正则表达式编辑器:
Regexper:http://www.regexper.com/

Debuggex :https://www.debuggex.com/

PyRegex:http://www.pyregex.com/

1.匹配任意一个字符.

  • .是元字符
  • b.u可以找出bau bru biu b.u b1u等等等,但是不会找出bu biiu
  • .不能用于匹配换行符
    ⚠️:反斜杠\可以忽略元字符,使得元字符的功能与普通字符一样
    故,b\.u将找出b.u,b\\u将找出b\u

2.匹配阿拉伯数字、英文大小写和下划线\w\W

\w匹配阿拉伯数字、英文大小写和下划线
\W匹配被\w排除在外的字符(\w的补集)

3.匹配阿拉伯数字\d

  • 匹配数字: \d
  • 匹配小数:\d\.\d
  • 既匹配数字又匹配小数:➡️
    \D:匹配阿拉伯数字\d的补集(包含空格等)

4.匹配空白字符\s

\s:匹配空格、制表符、换行等
\S:匹配被\s排除在外的字符(\s的补集)

5.字符集合[a-zA-Z0-9]

[选择范围]:匹配方括号中的任意一个字符
[\u4e00-\u9fa5]:中的所有中文字符

6.重复一次或多次+

[范围]+:重复一次或多次
[yY][oO]+

yo
yooo
Yo
YOOOO

?[]里的一个字符重复一次或多次??

7.重复0次或多次*

[yY][oO]+[!~\.]*

yo
yooo
Yo
YOOOO
yo!
yo.
yoooo~~

8.重复0次或1次?

[范围]?:重复0次或1次
[yY][oO]+p?[!~\.]*

yop!!
Yoop
yooop
yo
yooo
Yo
YOOOO
yo!
yo.
yoooo~~

9.指定重复范围(重复a到b次)

{a,b}:重复a到b次

10.分组匹配

(.+)飞飞,(.+)追追
$1
$2

11.分组匹配但不捕获(?:模式)

https://biaoyansu.com/28.11

12.正向预查

正向肯定预查:(?=模式)
\d+(?=模式):前面是我要匹配的东西,后面必须跟模式,但是不要匹配模式中的内容
正向否定预查:(?!模式)
(?!模式)|\前面匹配的内容

13.反向预查

加了个箭头<
(?<=xxx) 反向肯定预查,与正向肯定预查类拟,只是方向相反
(? 反向否定预查,与正向否定预查类拟,只是方向相反

14.速查表

边界

符号 描述 例子 能匹配 不能匹配
^ 行首或字符串开始 ^yo yo ayo
$ 行末或字符串结束 yo$ yo yop
\b 单词边界 \byo\b mu yo mu muyomu
\B 非单词边界 \Byo\B muyomu mu yo mu

预查

符号 描述 例子 能匹配 不能匹配
(?=xxx) 正向肯定预查,从任何匹配xxx的字符串开始处匹配查找字符串 yo(?=o) yoo yo
(?!xxx) 正向否定预查,从任何不匹配pattern的字符串开始处匹配查找字符串 yo(?!o) yo yoo
(?<=xxx) 反向肯定预查,与正向肯定预查类拟,只是方向相反 (?<=y)o yo yoo
(? 反向否定预查,与正向否定预查类拟,只是方向相反 (? mood good

通配

符号 描述 例子 能匹配 不能匹配
[ ] 字符集合 [ace] a, c, e d
[ - ] 字符范围 [a-c] a, b, c d
[^ ] 不包含的字符集合 [^abc] d, e a, b, c
. 匹配除断行外的任何字符 yo. yoo, yop, yoh yo
\s 空白字符,等于[\n\r\f\t ] la\sla la la lala
\S 非空白字符,等于[^\n\r\f\t] la\Sla la+la la la
\d 数字 \d{2} 23 1a
\D 非数字 \D{3} yoo, abc yo1
\w 单词,等于[a-z-A-Z0-9_] \w{4} v123 v12.3
\W 非单词,等于[^a-z-A-Z0-9_] .$%? .$%? .ab?

特殊字符

特殊字符 描述
\n 断行
\r 回车符
\t 制表符
\v 垂直制表符
\f 换页
[\b] 退格

其他

符号 描述 例子 能匹配 不能匹配
| 或,其一 a|b a, b c
(xxx) 匹配xxx并获取这一匹配 yo(o|p) yoo 或 yop yoh
(?:xxx) 匹配xxx但不获取这一匹配 y(?:o) yo ya
+ 重复1次或多次 yo+ yo, yooo y
* 重复0次或多次 yo* y, yoo yop
? 出现0次或1次 yo? y, yo ye
?? ?的懒惰模式,尽可能少匹配 yoo?? yo yoo
+? +的懒惰模式 yo+? yo yoo
*? *的懒惰模式 yo*? y yo
{n} 重复n次 yo{2} yoo yooo
{n,m} 重复n到m次 yo{1, 3} yo,yooo yoooo
{n,} 重复至少n次 yo{2,} yoo, yooo yo

你可能感兴趣的:(正则表达式)