【问题标题】:Shell scripting:How do I check if a string follows a certain pattern?Shell 脚本:如何检查字符串是否遵循某种模式?
【发布时间】:2012-03-15 09:00:18
【问题描述】:

如何检查字符串是否遵循某种模式?

例如,我有 $var 存储“hello.txt”,而我想要匹配的模式是“^(.+).txt$”(即任何具有“[any text here].txt”的内容

【问题讨论】:

    标签: regex string shell comparison


    【解决方案1】:

    您也可以使用 shell glob 模式:

    if [[ "$var" == *.txt ]]; then ...
    
    case "$var" in
      *.txt) do something ;;
      *) do something else ;;
    esac
    

    【讨论】:

      【解决方案2】:

      使用 bash 内置 =~ 你可以这样做:

      if [[ "aaaa" =~ a+ ]]
       then
         echo "ok"
       else
        echo "no"
      fi
      

      【讨论】:

      • 我可以使用 Shell 的内置 '=~' 吗?
      • 这完全是愚蠢的,因为这不需要正则表达式,并且可以使用 POSIX 描述的可移植 shell 语言轻松完成,无需 bash 扩展。
      猜你喜欢
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 2012-08-31
      • 2022-10-23
      • 2022-01-17
      • 1970-01-01
      • 2013-02-05
      相关资源
      最近更新 更多