加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bash regex =?运算符匹配前缀

发布时间:2020-12-16 01:49:09 所属栏目:安全 来源:网络整理
导读:为什么这匹配 [[ 'hithere' =~ hi* ]] 但事实并非如此 [[ 'hithere' =~ *there ]] 解决方法 =?具体是 regular expressions operator.如果你想匹配零个或多个字符,你需要.*而不是*. [[ 'hithere' =~ hi.* ]] echo "Yes"Yes[[ 'hithere' =~ .*there ]] echo "Y
为什么这匹配

[[ 'hithere' =~ hi* ]]

但事实并非如此

[[ 'hithere' =~ *there ]]

解决方法

=?具体是 regular expressions operator.如果你想匹配零个或多个字符,你需要.*而不是*.

[[ 'hithere' =~ hi.* ]] && echo "Yes"
Yes

[[ 'hithere' =~ .*there ]] && echo "Yes"
Yes

但是,如果没有锚点,即使没有通配符,匹配也会成功.

[[ 'hithere' =~ hi ]]
[[ 'hithere' =~ there ]]
# Add anchors to guarantee you're matching the whole phrase.
[[ 'hithere' =~ ^hi.*$]]
[[ 'hithere' =~ ^.*there$]]

对于模式匹配,您可以使用带有不带引号的值.这使用bash pattern matching代替,这是你(明显)期待的.

[[ 'hithere' = hi* ]] && echo "Yes"
Yes

[[ 'hithere' = *there ]] && echo "Yes"
Yes

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读