Regex bash正则表达式不匹配;至少n次但不超过m“;

Regex bash正则表达式不匹配;至少n次但不超过m“;,regex,bash,shell,Regex,Bash,Shell,我正在尝试匹配字符串,例如:“+99”、“-82”、“5”、“自动”和“最大” ==带或不带符号的自动、最大和数字(比如整数) 我试过正则表达式 var='^([+|-]{0,1}[0-9][0-9]*)|(自动)|(最大)$” 但在我的例子{0,1}中,它在“至少n次但不超过m”的事情上失败了 无论如何,我测试了var='ab{0,1}'和var='ab{2}',它们都不起作用 我没有得到任何愤怒,但我认为下一个问题可能是这些:() 我在用#/bin/bash版本4.2.24(1) 提前谢谢

我正在尝试匹配字符串,例如:“+99”、“-82”、“5”、“自动”和“最大” ==带或不带符号的自动、最大和数字(比如整数)

我试过正则表达式

var='^([+|-]{0,1}[0-9][0-9]*)|(自动)|(最大)$”

但在我的例子{0,1}中,它在“至少n次但不超过m”的事情上失败了 无论如何,我测试了var='ab{0,1}'和var='ab{2}',它们都不起作用

我没有得到任何愤怒,但我认为下一个问题可能是这些:()

我在用#/bin/bash版本4.2.24(1)

提前谢谢

edit1: 我不知道如何将这个正则表达式分组,以便按照Karoly Horvath的建议工作。 我正在使用我在某处找到的这个检查功能

#!/bin/bash

INTEGER_MAX='^([+-])?[0-9][0-9]*$'

function isNumeric() { 

    check=`echo $1 | sed "s/\($2\)//"`

    if [ -z ${check} ]; then
        return 0
    else
        return 1
    fi
}

isNumeric "$1" "$INTEGER_MAX" && echo "passed"
edit2-已解决

它正在与

RE='(^(+-])?[0-9]+$)|(^auto$)|(^max$)”

测试

[[$string=~$pattern]]&&echo“已通过”


谢谢

选择器接受一个字符,该字符可以是
+
-
。你的意思可能是:
[+-]

{0,1}
的简写是
[0-9][0-9]*
只是
[0-9]+
,但当然两者都应该起作用

无论如何,我测试了var='ab{0,1}'和var='ab{2}',但这些都不起作用 都不是

ab{0,1}
表示
a
ab
,量词作用于最后一个表达式,通常是字符或选择器,如果要对表达式应用量词,则必须将其分组


如果您还有其他问题,请发布如何使用正则表达式,因为我不确定您的问题是什么…

您还没有告诉我们如何使用正则表达式。。不同的命令需要不同的正则表达式语法。您是在使用Bash正则表达式匹配运算符
[[$string=~$pattern]]
还是
grep
或者什么?为什么不使用类似于
的函数来替换复杂的函数,比如如果[$1=~^[+-]?[0-9]+$].[$1=~^max$].[$1=~^auto$].[$1=~^auto$]