\w:匹配字母、数字、下划线。等价于[A-Za-z0-9_]
\W:不匹配非字母、数字、下划线。等价于 [^A-Za-z0-9_]
\d:匹配一个数字字符。等价于 [0-9]
\D:匹配一个数字字符。等价于 [^0-9]
\S:匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\s: 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]
例1:echo "i am a boy" | grep 'a\sboy' #匹配a boy
例2:echo "i am a boy" | grep '\S' #匹配所有费空白
\b:匹配一个单词边界,也就是指单词和空格间的位置。
例1:echo "i am a boy" | grep '\bam\b' #只匹配am
例2:echo "i am a boy" | grep 'a\s\bboy\b' #匹配a boy
例3:echo "i am a boy" | grep '\bam\b' #精确只匹配am
. 匹配任意一个字符,除了换行符\n
例:echo "code"|grep 'c..e'
? 匹配前面的子表达式零次或一次
例:echo "coe"|grep 'cod?e' #coe和code都可以匹配上
+ 匹配前面的子表达式一次或多次(至少一次)
.? 匹配前面任意一个字符有没有都可以
筛选
(要匹配的内容)
(?!筛选出去的内容)
例1:123456789@qq.com 获取到是什么邮箱
(qq) #获取到的就是qq
例2:获取除了qq邮箱以外的邮箱
123456789@qq.com
123456789163.com
@(?!qq).+ #获取到了163邮箱
后行断言
获取以X开始,不以Z结尾的字符串(?<=X)(?=Z)
例1:iloveyou匹配love
(?<=i)love(?=you)
(?<=i)love
(?<=i)\S+
反向后行断言
获取不以X开始,不以Z结尾的字符串(?<!X)(?!Z)
例1:iloveyou匹配love
(?<!i)love(?!you)
(?<!i)love
(?<!i)\S+
例2:$ a = a^2 $ 匹配以1个$符号开头和结尾的数据
(?<!\$)\${1}[^\$]+\${1}(?!\$)
#解释:
一、\${1}[^\$]+\${1}匹配 $开始 任何数据 $结尾
二、(?<!\$)\${1} 1个$前面没有$
三、\${1}(?!\$) 1个$后面没有$
正则表达式笔记
最新推荐文章于 2022-09-12 18:04:39 发布