正则表达式

文章目录

一、什么是正则表达式

正则表达式(Regular Expression)是用于匹配字符串模式的工具。它可以高效地实现字符串的搜索、替换、验证等操作

二、第一类正则

  • 元字符:指那些在正则表达式中具有特殊意义的专用字符,如:点(.)星(*)问号(?)等。
  • 前导字符:即位于元字符前面的字符 abc*或aooo.
bash 复制代码
1、.  任意单个字符,除了换行符
[root@localhost ~]# grep "go." 1.txt  
gole
goole
gooooole
gooooooooole
2、*  前导字符出现0次或多次,ab*能匹配"a"、"ab"以及"abb",但是不能匹配"cb"
[root@localhost ~]# grep "go*" 1.txt    #匹配前导字符0次或多次,即匹配到前导字符"o"出现0次或多次,结果如下
ggle
gole
goole
gooooole
gooooooooole
3、.* 任意长度的字符,ab.*
[root@localhost ~]# grep "goo.*" 1.txt   #匹配goo之后的任意长度
goole
gooooole
gooooooooole
4、^  行的开头
[root@localhost ~]# grep "^goo*" 1.txt  #匹配以goo开头并且前导字符o出现0次或者多次
gole
goole
gooooole
gooooooooole
5、$  行的结尾
[root@localhost ~]# grep ".*com$" 1.txt  #匹配以com结尾,并且前面任意字符
.com
baidu.com
6、^$ 空行 
[root@localhost ~]# grep "^$" 1.txt #匹配空行
7、[]      匹配指定字符组内的任一单个字符,[abc]
8、[^]     匹配不在指定字符组内的任一单个字符,[^abc]
9、^[]     匹配指定字符组内的任一字符开头,^[abc]
10、^[^]   匹配不以指定字符组内的任一字符开头,^[^abc]
11、\<     取单词的头  
12、\>     取单词的尾
13、\<\>   精确匹配符号
14、\{n\}  匹配前导字符连续出现n次
15、\{n,\} 匹配前导字符至少出现n次
16、\{n,m\}匹配前导字符出现n次与m次之间
17、\(\)   保存被匹配的字符
例子:末行模式下修改:%s/192.\(168.1.254\)/172.\1/g  #将192修改为172  
  • perl内置正则:
bash 复制代码
1、\d  匹配数字[0-9]
[root@localhost ~]# grep -P '\d' test.txt
2、\w  匹配字母数字下划线[a-zA-Z0-9_]
[root@localhost ~]# grep -P '\w' test.txt
3、\s  匹配空格、制表符、换页符[\t\r\n]
[root@localhost ~]# grep -P '\s' test.txt
  • 扩展正则表达式元字符grep -E或egrep
bash 复制代码
1、+  匹配一个或多个前导字符,如:bo+ 匹配结果boo或bo
2、? 匹配0个或1个前导字符,如:bo? 匹配结果b或bo
3、a|b 匹配a或b
4、() 组字符,如:(my|your)self
5、{n} 前导字符重复n次
6、{n,} 前导字符重复最少n次
7、{n,m} 前导字符重复n到m次
  • 匹配ip地址
bash 复制代码
[root@localhost ~]# grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' 1.txt 
192.168.1.254
172.31.0.1

三、第二类正则

bash 复制代码
字符写法     等价写法           含义
[:digit:]	[0-9] 或 \d	     任意数字字符(0-9)
[:alpha:]	[a-zA-Z]	     任意字母(大小写)
[:alnum:]	[a-zA-Z0-9]	     任意字母或数字
[:lower:]	[a-z]	         任意小写字母
[:upper:]	[A-Z]	         任意大写字母
[:punct:]		             任意标点符号(如 .,!?- 等)
[:space:]	[ \t\r\n\f\v] 或 \s	    任意空白字符(空格、制表符、换行等)
[:print:]		                    任意可打印字符(包括空格)
[:graph:]		                    任意可打印字符(不包括空格)
相关推荐
逝水如流年轻往返染尘4 天前
正则表达式字符串
java·正则表达式
AI_56786 天前
Python正则表达式终极指南:从模式匹配到文本工程的智能跃迁
人工智能·python·正则表达式
晚霞的不甘8 天前
Flutter for OpenHarmony从基础到专业:深度解析新版番茄钟的倒计时优化
android·flutter·ui·正则表达式·前端框架·鸿蒙
幼稚园的山代王11 天前
Java 正则核心 API 拆解
java·开发语言·正则表达式
马猴烧酒.11 天前
【正则表达式详解|Java】从0学习实战够用
学习·正则表达式
流㶡12 天前
Python数据分析中的正则表达式:匹配字符串与常用函数详解
正则表达式
sulikey13 天前
B站网页端弹幕屏蔽词正则表达式
正则表达式·bilibili·哔哩哔哩·屏蔽弹幕
sulikey13 天前
B站移动客户端的正则表达式屏蔽规则
正则表达式·bilibili·哔哩哔哩·弹幕屏蔽
longailk13 天前
grep正则表达式小失误
java·服务器·正则表达式
白小筠13 天前
Python之正则表达式
开发语言·python·正则表达式