正则表达式

一、REGEXP 正则表达式

一类特殊字符及文本字符编写的模式,有些字符(元字符)不表示字符字面意思,而表示控制或通配的功能
程序支持:grep,sed,awk,vim,less,nginx,varnish等
两类:
​ 基本正则表达式:BRE
​ 扩展正则表达式:ERE
元字符分类:字符匹配,匹配次数,位置锚定,分组

1、基本正则表达式元字符
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和任意数字
[:alpha:] 代表任何英文大小写字符,即A-Z,a-z
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符
[:cntrl:] 不可打印的控制字符(退格,删除等)
[:digit:] 十进制数字 [:xdigit:] 十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
2、匹配次数

用在要指定次数的字符后面,指定前面字符要出现的次数

* 匹配前面的字符任意次,包括0次 贪婪模式:尽可能长的匹配
.* 任意长度的任意字符
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少一次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至多n次
3、位置锚定

定位出现的位置

^ 行首锚定,用于模式的最左侧
$  行尾锚定,用于模式的最右侧
^PATTERN$,用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\<\b词首锚定,用于单词模式的左侧
\>\b词尾锚定,用于单词模式的右侧
\<PATTERN\>,匹配整个单词
4、分组
\(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理,如\(root\)\+
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为\1,\2,\3,....
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
示例:\(string1\+\(string2\)*\)
    \1  string1\+\(string2\)*
    \2  string2
后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身
或者:\|
示例:a\|b:a或b    C\|cat:C或cat    \(C\|c\)at:Cat或cat

二、扩展正则表达式

egrep = grep -E
egrep [OPTIONS] PATTERN [FILE…]
扩展正则表达式的元字符

1、字符匹配
    .  任意单个字符
    [] 指定范围的字符
    [^] 不在指定范围的字符
2、次数匹配
*   匹配前面字符任意次
?  0或1次
+   1次或多次
{m}     匹配m次
{m,n}   至少m次,至多n次
3、位置锚定
^   行首
$   行尾
\<,\b   语首
\>,\b   语尾
4、分组
()
后向引用    \1,\2
或者
a|b     a或b
C|cat   C或cat
(C|c)at     Cat或cat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值