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

时间:2012-05-07 17:40:06

标签: 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"

edit2 - 已解决

正在使用

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

上测试

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

THX!

1 个答案:

答案 0 :(得分:5)

[+|-]选择器接受一个+ |-字符。你可能意味着:[+-]

{0,1}的简写为?,而[0-9][0-9]*只是[0-9]+,但当然两者都有效。

  

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

ab{0,1}表示aab,量词可以处理最后一个表达式,通常是字符或选择器,如果要为表达式应用量词必须分组。

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