正则表达式

文章目录

一、什么是正则表达式

正则表达式(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:]		                    任意可打印字符(不包括空格)
相关推荐
临床数据科学和人工智能兴趣组16 小时前
在R语言的生态系统中,字符串处理一直是一个重要且复杂的任务
开发语言·正则表达式·r语言·r语言-4.2.1
小白快快跑哦2 天前
python-字符串全解(六):正则表达式-前后相断言
开发语言·python·正则表达式·前后相断言
小白快快跑哦3 天前
python-字符串全解(六):正则表达式-修饰符
python·正则表达式·修饰符
11路没有终点3 天前
正则表达式(Regex)通用学习文档
正则表达式
小白快快跑哦3 天前
python-字符串全解(六):正则表达式-分组
python·mysql·正则表达式·分组
临床数据科学和人工智能兴趣组4 天前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy
只愿云淡风清4 天前
正则表达式学习笔记-01 正则表达式的来源
笔记·学习·正则表达式
半亩码田4 天前
C#转Python第4.8篇:正则表达式:Python re 模块 vs C# System.Text.RegularExpressions
python·正则表达式·c#
残诗5 天前
正则表达式分类掌握与应用
正则表达式
databook11 天前
面向数据工程师的正则表达式:从日志清洗到字段提取
python·正则表达式·数据分析