【问题标题】:Extended Regular Expression in UNIXUNIX 中的扩展正则表达式
【发布时间】:2013-04-14 14:23:12
【问题描述】:

我并不是说这个问题只针对 UNIX,而是我在 Solaris 上工作,我没有在任何其他操作系统上尝试过。 我在扩展的正则表达式之间感到困惑:

第一:

[[ "str" == ?(str|STR) ]] && echo "matched"

这项工作正确,但当:

[[ "str str" == ?(str|STR)(.*) ]] && echo "matched"

不行,是不是只能比较一种模式。

第二:

[[ "str" =~ ?(str|STR) ]] && echo "matched"

为什么我不能在这里使用这个表格?,但是什么时候:

[[ "str" == (str|STR)? ]] && echo "matched"

它工作正常。

【问题讨论】:

    标签: regex unix ksh


    【解决方案1】:

    您似乎正在尝试合并 extended globsextended regular expressions。我会说这是一件坏事。

    $ set '(str|STR)'
    
    $ [[ 'str' =~ $1 ]] && echo matches
    matches
    
    $ [[ 'str str' =~ $1 ]] && echo matches
    matches
    

    【讨论】:

      猜你喜欢
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      • 2012-03-06
      相关资源
      最近更新 更多