【问题标题】:shell script - assign regex to a variable based on result of an if statementshell 脚本 - 根据 if 语句的结果将正则表达式分配给变量
【发布时间】:2014-10-20 19:52:07
【问题描述】:

我有一个 if 语句(它测试变量 (test) 是否具有特定值),然后根据 if 语句的结果为新变量 (result) 分配一个值.其中一个值必须是正则表达式,它将匹配下一项为字母(a-z,A-Z)。

if [ "$test" -eq "0" ] // if test = 0
then
    result="^[a-zA-Z\-]"
fi

正则表达式是什么,我将如何分配它(不确定我分配的是否正确)?

谢谢:)

编辑:它将用于类似结构的句子中,例如 The next character needs to be a letter:result 将确保下一个字符是字母。

【问题讨论】:

  • 您如何在其余代码中使用$result 变量?
  • 在这种情况下,它将用于匹配一个句子(例如,下一个字符应该是一个字母,result 会确保下一个字符是一个字母)。我无法真正显示代码,对不起。你也知道为什么这两次被否决了吗?
  • 不知道是谁投了票,为什么投了反对票。但我认为这可能是因为问题不是很清楚并且没有示例值。例如首先你写了只匹配小写字母的正则表达式,现在这个:result会确保下一个字符是一个字母)
  • 是的,我有点紧张,它不一定是小写字母,只是更常见的是小写字母。我将编辑问题以反映这一点。

标签: regex shell


【解决方案1】:

Bash 没有任何方法可以将正则表达式存储为字符串,所以是的,它只是常规的字符串赋值,如下所示:

if next_input_must_start_with_a_letter; then
  regex='^[[:alpha:]]'
else
  regex='' # always match unconditionally
fi

read -r input
if ! [[ $input =~ $regex ]]; then
  echo "Input did not match regex!" >&2
fi

【讨论】:

    猜你喜欢
    • 2013-05-10
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多