UNIX中的扩展正则表达式

时间:2013-04-14 14:23:13

标签: regex unix ksh

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

第一

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

这项工作是正确的,但是:

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

它不起作用,是否意味着我只能比较一种模式。

第二

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

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

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

它可以正常工作。

1 个答案:

答案 0 :(得分:2)

看起来你正试图结合起来 extended globsextended regular expressions。我会说这是一件坏事。

$ set '(str|STR)'

$ [[ 'str' =~ $1 ]] && echo matches
matches

$ [[ 'str str' =~ $1 ]] && echo matches
matches