Regex shell中的expr匹配问题
在sh shell脚本中,我编写了以下内容:Regex shell中的expr匹配问题,regex,shell,match,Regex,Shell,Match,在sh shell脚本中,我编写了以下内容: opr=+ echo `expr match "$opr" '[+\-x/]'` 但我在运行时遇到以下错误: expr: syntax error 我做错了什么?当我使opr等于-和/时,我会得到相同的错误 我发现的另一件有趣的事情是当我写这篇文章时: opr=a echo `expr match "$opr" '[+\-x/]'` 它返回以下内容: 1 这意味着它将字符串“a”与+、-、x和/中的一个匹配。但这毫无意
opr=+
echo `expr match "$opr" '[+\-x/]'`
但我在运行时遇到以下错误:
expr: syntax error
我做错了什么?当我使opr等于-和/时,我会得到相同的错误
我发现的另一件有趣的事情是当我写这篇文章时:
opr=a
echo `expr match "$opr" '[+\-x/]'`
它返回以下内容:
1
这意味着它将字符串“a”与+、-、x和/中的一个匹配。但这毫无意义 第一种情况:
+
+
对expr有特殊意义:
+ TOKEN
interpret TOKEN as a string, even if it is a
keyword like `match' or an operator like `/'
第二种情况:a
您的regexp是一个范围操作,匹配从
+
到x
的字符,其中包括大多数alnum。要使-
在charclass中按字面意思匹配,它必须是第一个或最后一个字符;反斜杠不起作用。谢谢,进一步搜索后,将关键字解释为字符串的方法是使用'quote'参数,这是GNU扩展,如果设置了'POSIXLY_CORRECT'环境变量,它将不起作用。