正则表达式

文章目录

一、什么是正则表达式

正则表达式(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:]		                    任意可打印字符(不包括空格)
相关推荐
雨中飘荡的记忆2 小时前
正则表达式入门到实战
正则表达式
长城20247 天前
HTML5中表单的pattern属性解析
前端·正则表达式·html·html5·pattern·pattern属性·pattern正则表达式
Gss7778 天前
Linux 正则表达式详解(基础 + 扩展 + 实操)
linux·运维·正则表达式
黑客思维者8 天前
正则表达式(九)网络安全:检测SQL注入攻击 + 检测XSS跨站脚本 + 扫描敏感信息泄露 + 匹配暴力破解异常IP
sql·web安全·正则表达式
黎雁·泠崖8 天前
Java常用类核心详解(七):正则表达式 Regex 从入门到实战
java·开发语言·正则表达式
秀儿还能再秀8 天前
正则表达式核心语法 + Python的 re 库中常用方法
python·正则表达式
xcLeigh8 天前
Python入门:Python3 正则表达式全面学习教程
python·学习·正则表达式·教程·python3
数据知道8 天前
MongoDB 正则表达式查询:在 MongoDB 中实现模糊搜索与索引优化陷阱
数据库·mongodb·正则表达式
A懿轩A8 天前
【Java 基础编程】Java 正则表达式实战:Pattern/Matcher、元字符与常用正则,验证与提取必备
java·开发语言·正则表达式
石牌桥网管8 天前
正则表达式:匹配不包含指定字符串的文本
java·javascript·python·正则表达式·go·php