我正在尝试匹配字符串,例如:“+ 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!
答案 0 :(得分:5)
[+|-]
选择器接受一个+
|
或-
字符。你可能意味着:[+-]
。
{0,1}
的简写为?
,而[0-9][0-9]*
只是[0-9]+
,但当然两者都有效。
无论如何我测试了var ='ab {0,1}'和var ='ab {2}'这些都不起作用 既不
ab{0,1}
表示a
或ab
,量词可以处理最后一个表达式,通常是字符或选择器,如果要为表达式应用量词必须分组。
如果您还有其他问题,请发布您如何使用正则表达式,因为我不确定您的问题是什么......