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

Pet*_*rek 3 regex bash shell

我正在尝试匹配字符串,如:"+ 99"," - 82","5","auto"和"max"== auto和max和数字(让我们说整数)有或没有符号

我试过正则表达式

var='^([+|-]{0,1}[0-9][0-9]*)|(auto)|(max)$'

但它在"至少n次但不超过m"的情况下失败,在我的情况下{0,1}无论如何我测试了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"
Run Code Online (Sandbox Code Playgroud)

edit2 - 求助

它正在使用

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

测试

[[ $string =~ $pattern ]] && echo "passed"

谢谢!

Kar*_*ath 5

所述[+|-]选择器接受一个字符其是+ |-.你可能意味着:[+-].

简写{0,1}?,而且[0-9][0-9]*很简单[0-9]+,但当然两者都应该有效.

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

ab{0,1}表示要么a或者ab,如果要对要对其进行分组的表达式应用量词,则量词可以处理最后一个表达式(通常是字符)或选择器.

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