bash 正则表达式使用注意事项

常用的正则表达式有多种方言。Bash支持的是扩展正则表达式的变体。这与许多在线正则表达式测试人员支持的不同,后者通常是更现代的Perl 5 / PCRE变体。

  • 不支持\d \D \s \S \w \W-这些可以与POSIX字符类等同替换[[:digit:]][^[:digit:]][[:space:]][^[:space:]][_[:alnum:]],和[^_[:alnum:]],分别。(注意最后一种情况,其中[:alnum:]POSIX字符类用下划线扩充,以完全等同于Perl \w速记。)
  • Bash不支持非贪婪匹配。你有时可以a.*?b用类似的东西代替a[^ab]*b在实践中获得类似的效果,尽管两者并不完全相同。
  • Bash不支持非捕获括号(?:...)。在简单的情况下,只需使用捕获括号(...); 当然,如果您使用捕获组和/或反向引用,这将重新编号您的捕获组。
  • Bash不支持类似的外观(?<=before)(?!after)实际上任何东西(?都是Perl扩展。虽然您可以将问题重新划分为可以避免外观的问题,但这些问题并没有简单的一般解决方法

 

常见的替换:

\s   ==>  \ (空格转义) 或 [[:space:]]

\d  ==> [0-9] 或 [[:digit:]]

 

有些bash环境下(没有细究),正则表达式中的"\s"是支持的(例如grep的参数),或者将正则表达式定义为变量使用时支持(例如if [[ $test =~ $regex ]] $regex变量支持"\s",直接在 =~ 的右边写正则表达式时不支持"\s")。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值