正则表达式

文章目录

一、什么是正则表达式

正则表达式(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:]		                    任意可打印字符(不包括空格)
相关推荐
吴声子夜歌1 天前
正则指引——Ruby
开发语言·正则表达式·ruby
吴声子夜歌1 天前
正则指引——Golang
开发语言·golang·正则表达式
吴声子夜歌2 天前
正则指引——PHP
开发语言·正则表达式·php
吴声子夜歌4 天前
正则指引——断言
正则表达式
吴声子夜歌4 天前
正则指引——匹配原理
java·正则表达式
吴声子夜歌5 天前
正则表达式——环视
开发语言·正则表达式
吴声子夜歌6 天前
正则表达式——边界
正则表达式
营养充电站6 天前
C++23 新特性在 CLion 中的实战体验
macos·docker·jupyter·正则表达式
吴声子夜歌7 天前
正则表达式——字符组
正则表达式