Regex bash正则表达式不匹配;至少n次但不超过m“;
我正在尝试匹配字符串,例如:“+99”、“-82”、“5”、“自动”和“最大” ==带或不带符号的自动、最大和数字(比如整数) 我试过正则表达式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) 提前谢谢
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$]