正则表达式

文章目录

一、什么是正则表达式

正则表达式(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:]		                    任意可打印字符(不包括空格)
相关推荐
人生在勤,不索何获-白大侠6 小时前
day15——Java常用API(二):常见算法、正则表达式与异常处理详解
java·算法·正则表达式
Hilaku11 小时前
用“人话”讲明白10个最常用的正则表达式
前端·javascript·正则表达式
feifeigo12310 天前
Java 正则表达式高级用法
java·mysql·正则表达式
决战软件之巅14 天前
Python 正则表达式
正则表达式
小浪学编程14 天前
C#学习13——正则表达式
学习·正则表达式
yuanyxh15 天前
《精通正则表达式》精华摘要
前端·javascript·正则表达式
red润16 天前
被转义字符麻痹的一天:理解转义字符串
前端·javascript·正则表达式
叶 落18 天前
[Java 基础]正则表达式
java·正则表达式·java 基础
fs哆哆20 天前
在VB.net中,用正则表达式方法清除干扰符号方法
开发语言·正则表达式·c#·.net