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