正则表达式的开头和结尾

Sol*_*gon 0 regex git terminal

我正在尝试使用 git 运行搜索以获取两个文件夹之一中的所有暂存文件:本地或组件。我只想获取 JS 文件。该命令在控制台中运行。

到目前为止我所拥有的:

STAGED_FILES=($(git diff --cached --name-only --diff-filter=ACM | grep "^(local|components).*?.js"))
Run Code Online (Sandbox Code Playgroud)

这让我获得了所有暂存文件:

git diff --cached --name-only --diff-filter=ACM 
Run Code Online (Sandbox Code Playgroud)

这让我得到所有以本地或组件开头的文件路径

grep "^(local|components)"
Run Code Online (Sandbox Code Playgroud)

这让我得到了所有的 js 文件

grep ".js"
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这没有给我任何回报:

($(git diff --cached --name-only --diff-filter=ACM | grep "^(local|components).*?.js"))
Run Code Online (Sandbox Code Playgroud)

我可以用什么正则表达式来搜索这两个文件夹中的所有 js 文件?

nu1*_*73R 5

它不起作用,因为grep不支持?惰性匹配。您可以使用-E扩展正则表达式。

例如考虑这些

$ echo "asfasdfzasdfasdfz" | grep -E "a.*?z"
asfasdfzasdfasdfz
$ echo "asfasdfzasdfasdfz" | grep  "a.*?z"
$ echo "asfasdfzasdfasdf?z" | grep  "a.*?z"
asfasdfzasdfasdf?z
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,如果没有-E它,它?也会尝试在字符串内进行匹配。