Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex shell中的expr匹配问题_Regex_Shell_Match - Fatal编程技术网

Regex shell中的expr匹配问题

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和/中的一个匹配。但这毫无意

在sh shell脚本中,我编写了以下内容:

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'环境变量,它将不起作用。