【问题标题】:write a regular expression in bourne shell script在 bourne shell 脚本中编写正则表达式
【发布时间】:2014-12-11 05:16:12
【问题描述】:

我正在编写一个脚本,它只接受某种格式的用户参数。 就像是 MSK16PCF1_SOURCE

即正好 3 个字母字符,后跟 2 或 3 个数字,然后是 3 或 4 个字母数字,然后是 _,然后是一些字母字符。

我已经写了如下的正则表达式。

^[[:alpha:]]{2}[A-Z][[:digit:]]{2,3}[0,9][[:alnum:]]{2}[A-Z]?\_[[:alpha:]]*

但它不起作用。 你能建议需要改变的地方吗?

$ cat swf.sh

vari=MSK16PCF1_SOURCE
if echo "$vari" | grep -q '^[[:alpha:]]{2}[A-Z][[:digit:]]{2,3}[0,9][[:alnum:]]{2}[A-Z]?_[[:alpha:]]*'; then
     echo success
fi

【问题讨论】:

  • 您在哪里/如何尝试使用该正则表达式?
  • 下面是脚本 swf.sh ######################## vari=MSK16PCF1_SOURCE if echo "$vari" | grep -q '^[[:alpha:]]{2}[A-Z][[:digit:]]{2,3}[0,9][[:alnum:]]{2}[A-Z]?_ [[:α:]]*';然后回显成功fi

标签: regex shell unix grep sh


【解决方案1】:

这应该可以满足您的所有需求。

^[[:alpha:]]{3}[[:digit:]]{2,3}[[:alnum:]]{3,4}_[[:alpha:]]*$

在基本 grep 中,您需要转义大括号,以便将大括号表示为重复量词。

^[[:alpha:]]\{3\}[[:digit:]]\{2,3\}[[:alnum:]]\{3,4\}_[[:alpha:]]*$

【讨论】:

    猜你喜欢
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2012-01-25
    • 2019-03-27
    • 2013-08-17
    • 1970-01-01
    • 2016-06-06
    相关资源
    最近更新 更多