grep无法使用完整的正则表达式

问题描述

grep无法使用完整的正则表达式,比如前置断言、后置断言、\d和\t、\n等

问题原因

使用了扩展正则,而不是perl正则。规则和perl正则不同

从文档上讲得很清楚:
-E PATTERN is an extended regular expression
他是扩展表达式,而不是正则表达式……

链接如下:
https://blog.51cto.com/linux2015/1576889

扩展正则并不支持很多正则表达式语法:

  • 前置断言(?=123)
  • 后置断言
  • \d+也并不支持
  • \t也不支持

在这里插入图片描述
比如下面123,使用\d+匹配失败
在这里插入图片描述

作为平替,扩展正则 -E扩展了其他的语法:
在这里插入图片描述-E 并不等于perl正则。虽然perl正则大部分语法都类似

解决方案

而想要支持全部的正则表达式,需要使用-P:perl正则

测试发现符合perl规则
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值