正则表达式

正则表达式分类

  1. 基本正则表达式(BREs)
  2. 扩展正则表达式(EREs)
  3. Perl正则表达式(PREs)

字符类使用的符号

.            #匹配一个字符(\n除外)
[]            #匹配括号[]内的字符
-            #在括号[]内表示范围
^            #在括号[]的开头表示取非 !
示例:
printf "asdfghjkl123456789\n" >> regex
grep -n -o 'a.d' regex
grep -n -o '[1-9]' regex
grep -n -o '[^1-9]' regex

单个字符(PREs支持单个字符,BREs和EREs不支持单个字符)

\w            #数字字母和下划线
\W            #非\w的字符
\d            #数字
\D            #非数字
\s            #空白字符
\S            #非空白字符
\r            #回车
\n            #换行
\f            #换页
\t            #制表符
\v            #垂直制表符
[\b]        #回退符
示例:
printf "asdfghjkl\t123456789\n" >> regex
grep -P -n -o 'f\w' regex
grep -P -n -o '3\d' regex
grep -P -n -o '.\t.' regex

单个字符(Linux Shell环境下的单个字符)

[:alnum:]            #匹配一个数字或字母
[:alpha:]            #字母
[:digit:]            #数字
[:lower:]            #小写字母
[:upper:]            #大写字母
[:space:]            #空白字符
[:blank:]            #制表符
[:print:]            #可打印字符
[:cntrl:]            #控制字符
[:xdigit:]            #十六进制数
[:punct:]            #标点符号
[:graph:]            #可见可打印字符

数量限定符

{N}                #紧跟在它前面的单元精确匹配 N 次
{N,}            #最少匹配 N 次
{,M}            #最多匹配 M 次
{N, M}            #匹配 N-M 次之间
*                #{0,}
+                #{1,}
?                #{0,1}
推荐使用*, +, ?;默认下*, +, ?是贪婪模式; *?, +?, ??则是非贪婪模式
示例:
printf "192.168.14.1 \n192.158.a.14\n" >> regex
grep -P -n -o '\d{1,3}\.\d+?\.' regex

位置限定符

^            #行首位置
$            #行尾位置
\b            #单词开头或结尾位置
\B            #单词中间位置
示例:
printf "cherrying\trysx\t1234\nabcd1234\n" >> regex
grep -P -n -o '^\bch' regex
grep -P -n -o '34\b' regex

其他特殊字符

\            #转义字符
()            #括起来的部分组成一个单元
|            #连接两个子表达式,或的关系

在BREs中 (){}|+? 表示本义,要使用特殊义要转义
而在EREs和PREs中 (){}|+? 直接表示特殊义

后置引用(BREs不支持后置引用)

\0            #引用所有匹配的内容
\1            #引用括号()括起来的第一个单元
...
\9            #引用括号()括起来的第九个单元
示例:
printf "192.168.103.1:8080\n127.0.0.1:8080\n111.222.333.1:8080\n" >> regex
sed -E s/'(([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])'/\\2/g regex



 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值