正则表达式

正则表达式

正则表达式

1.正则表达式分类

正则表达式:REGEXP,REGular EXPression。
正则表达式分为两类:

  • Basic REGEXP(基本正则表达式)
  • Extended REGEXP(扩展正则表达式)

2.基本正则表达式

元字符

. 			//任意单个字符
[]			//匹配指定单位外的任意单个字符
[^]			//匹配指定范围外的任意单个字符

匹配次数

*			//匹配其前面的任意单个字符任意次
.*			//任意长度的任意字符
\?			//匹配其前面的任意单个字符1次或0次
\+ 			//匹配其前面的任意单个字符至少一次
\{m,n\}		//匹配其前面的任意单个字符至少m次,至多n次

位置锚定

^ 			//锚定行首,此字符后面的任意单个字符必须出现在行首
$			//锚定行尾,此字符前面的任意单个字符必须出现在行尾
^$			//空白行
\<或\b		//锚定词首,其后面的任意单个字符必须作为单词首部出现
\>或\b		//锁定词尾,其前面的任意单个字符必须作为单词尾部出现

分组

\(\)
例:\(ab\)*
//后向引用
	\1		//引用第一个左括号以及与之相应的右括号所包括的所有内容
	\2		//引用第二个左括号以及与之对应的右括号所包括的所有内容

示例:

//过滤任意单个字符
[root@localhost niebr]# ls
1  12  123  1234  2  3  4
[root@localhost niebr]# ls |grep '^.$'
1
2
3
4
[root@localhost niebr]# ls
1  12  1222  12222  123  1234  2  3  4
[root@localhost niebr]# ls |grep '^12*$'
1
12
1222
12222


//匹配指定范围内的任意单个字符
[root@localhost niebr]# ls |grep '^[12]$'
1
2
[root@localhost niebr]# ls |grep '^[123]$'
1
2
3
[root@localhost niebr]# ls |grep '^[1-3]$'
1
2
3

//匹配指定范围外的任意单个字符
[root@localhost niebr]# ls |grep '^[^1]$'
2
3
4

//匹配其前面的任意单个字符任意次
[root@localhost niebr]# ls
1  12  1222  12222  123  1234  2  3  4
[root@localhost niebr]# ls |grep '^12*$'
1
12
1222
12222

//匹配任意长度的任意字符
[root@localhost niebr]# ls
1  12  1222  12222  122223  12223  1223  123  1234  2  3  4
[root@localhost niebr]# ls |grep '^1.*3$'
122223
12223
1223
123

//匹配其前面的任意单个字符1次或0次
[root@localhost niebr]# ls |grep '^1\?2$'
12
2

//匹配其前面的任意单个字符至少1次
[root@localhost niebr]# ls |grep '^12\+3$'
122223
12223
1223
123

//匹配其前面的任意单个字符至少m次,至多n次
[root@localhost niebr]# ls |grep '^12\{2,4\}3$'
122223
12223
1223

//以1开头
[root@localhost niebr]# ls |grep '^1'
1
12
1222
12222
122223
12223
1223
123
1234

//以2结尾
[root@localhost niebr]# ls |grep '2$'
12
1222
12222
2

//锚定词首
[root@localhost niebr]# cat 1
123
123321
321123
321
[root@localhost niebr]# grep '\<123' 1
123
123321

//锚定词尾
[root@localhost niebr]# grep '321\>' 1
123321
321

3.扩展正则表达式

字符匹配

.       //匹配任意单个字符
[]      //匹配指定范围内的任意单个字符

[[:alpha:]]  表示任意大小写字母
[[:lower:]]  表示任意小写字母
[[:upper:]]  表示任意大写字母
[[:digit:]]  表示09之间的任意单个数字(包括09
[[:alnum:]]  表示任意数字或字母
[[:space:]]  表示任意空白字符,包括"空格""tab键"[[:punct:]]  表示任意标点符号
[0-9]与[[:digit:]]等效
[a-z]与[[:lower:]]等效
[A-Z]与[[:upper:]]等效
[a-zA-Z]与[[:alpha:]]等效
[a-zA-Z0-9]与[[:alnum:]]等效

[^ ]     //匹配指定范围外的任意单个字符
例:[^[:alpha:]]  表示单个非字母字符

次数匹配

*       //匹配其前面的任意单个字符任意次
?       //匹配其前面的任意单个字符1次或0次
+       //匹配其前面的任意单个字符至少1次
{m,n}   //匹配其前面的任意单个字符至少m次,至多n次

位置锚定

^       //锚定行首,此字符后面的任意单个字符必须出现在行首
$       //锚定行尾,此字符前面的任意单个字符必须出现在行尾
^$      //空白行
\<或\b       //锚定词首,其后面的任意单个字符必须作为单词首部出现
\>或\b       //锚定词尾,其前面的任意单个字符必须作为单词尾部出现

分组

()      //分组
\1,\2,\3,....
例:(ab)*
//后向引用
	\1      //引用第一个左括号以及与之对应的右括号所包括的所有内容
	\2      //引用第二个左括号以及与之对应的右括号所包括的所有内容
//或者
	|      //or 默认匹配|的整个左侧或者整个右侧的内容
		   //例:C|cat表示C或者cat,要想表示Cat或者cat则需要使用分组,如(C|c)at
posted @   niebangrui  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示