Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 如何在没有Perl的情况下使用grep在ash中进行非贪婪解析_Regex_Grep_Ash - Fatal编程技术网

Regex 如何在没有Perl的情况下使用grep在ash中进行非贪婪解析

Regex 如何在没有Perl的情况下使用grep在ash中进行非贪婪解析,regex,grep,ash,Regex,Grep,Ash,嗨,我正在尝试解析一个文件夹结构,并将目录中的前两个文件夹传递给一个变量。现在我使用的是正则表达式“/。?/”,除了我在OpenWRT上的ash版本不支持Perl,因此忽略了“?”。如何解决这个问题 var2=$(echo "$TR_TORRENT_DIR" | grep -Eio '\/.*?\/.*?\/') echo $var2 让你的正则表达式更具体 一般来说,使用非贪婪修饰符是一个危险信号。它应该让你考虑是否可以用更具体的方式重写正则表达式(因此量词是否贪婪无关紧要) 在这种情况下,

嗨,我正在尝试解析一个文件夹结构,并将目录中的前两个文件夹传递给一个变量。现在我使用的是正则表达式“/。?/”,除了我在OpenWRT上的ash版本不支持Perl,因此忽略了“?”。如何解决这个问题

var2=$(echo "$TR_TORRENT_DIR" | grep -Eio '\/.*?\/.*?\/')
echo $var2

让你的正则表达式更具体

一般来说,使用非贪婪修饰符是一个危险信号。它应该让你考虑是否可以用更具体的方式重写正则表达式(因此量词是否贪婪无关紧要)

在这种情况下,问题是
*
(另一个标志),它匹配得太多

如果使用
[^/]
而不是
,则可以避免所有问题:

/[^/]*/[^/]*/

将匹配前两个组件,仅此而已。(此外,无需转义
/
;它在正则表达式中并不特殊。)

谢谢。我认为非贪婪是一个危险信号,但我只是从正则表达式开始。非常感谢!