星星之火-正则表达式基础快速入门

本文最后更新于:March 31, 2022 pm

积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。

目录

正则表达式练习

一个使用教程(国外)

限定符

限定符 描述 示例
问号前面的字符需要出现0次一次(即可有可无)。 tea?:te、tel、tea
* 星号前面的字符需要出现0次多次 ab*c:ac、abc、abbbc
+ 加号前面的字符需要出现1次及以上 ab+c:abc、abbc、abbbc
{n,m} 精准匹配。需要匹配的次数。n表示最少多少次,m表示最多多少次。有四种写法。 ab{3}c:abbbc(三个b);ab{2,4}c:abbc、abbbc、abbbbc(2~4个b)

上面只是单个字符,如果是用于多个字符(字符串),用括号括起来即可。如:

(ab)+c:表示ab一起出现1次及以上次数的字符串,会找到 abababc 这种的。

位置限定符

字符 描述 示例
^ 匹配行首的位置 ^Content 匹配位于一行开头的Content
$ 匹配行末的位置 ;$ 匹配位于一行结尾的分号(;),^$表示匹配空行
\< 匹配单词开头的位置 \<th 匹配 this,但不匹配 ether、tenth等
\> 匹配单词结尾的位置 p\> 匹配leap
\b 匹配以单词开头或结尾的位置 \bwe\b匹配we …或 …. we,不会匹配wee、wwe。精准匹配。
\B 匹配非单词开头或结尾的位置 \Bwe\B匹配fwef、fwewo,不会匹配we、qwe、wefq

字符类

字符 描述 示例
. 匹配任意一个字符 abc.
【】 匹配中括号中的任意一个字符 【abc】
- 表示范围 【0-9a-zA-Z】
^ 位于【】中括号内的开头,匹配除括号中的字符外的任意一个字符 [^xy]匹配xy之外的任意一个字符
[[:xxx:]] grep工具预定义的一些命名字符类(并不是所有地方均可用) 【:alpha:】匹配一个字母,【:digit:】匹配一个数字

元字符

元字符 描述
. 匹配除换行符以外的任何字符。
\d 匹配数字:【0-9】
\D 匹配非数字:【^0-9】
\s 匹配空格字符:【\t\r\n\f】
\S 匹配非空格字符:【^\t\r\n\f】
\w 匹配单字字符:【a-zA-Z0-9_】
\W 匹配非单字字符:【^a-zA-Z0-9_】
^
$

特殊符号

字符 描述 示例
\ 转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符。 普通字符<写成 \<表示单词开头位置,特殊字符 .写成\.以及\写成\\就当作普通字符匹配。
() 将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符。 (【0-9】{1,3} \.){3}【0-9】{1,3} 匹配IP地址
` ` 连接两个子表达式,表示或的关系

其他

元字符 描述
. 句号匹配任意单个字符除了换行符。
[ ] 字符种类。匹配方括号内的任意字符。
[^ ] 否定的字符种类。匹配除了方括号里的任意字符
* 匹配>=0个重复的在*号之前的字符。
+ 匹配>=1个重复的+号前的字符。
? 标记?之前的字符为可选.
{n,m} 匹配num个大括号之前的字符或字符集 (n <= num <= m).
(xyz) 字符集,匹配与 xyz 完全相等的字符串.
` `
\ 转义字符,用于匹配一些保留的字符 `[ ] ( ) { } . * + ? ^ $ \
^ 从开始行开始匹配.
$ 从末端开始匹配.