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 文件?
它不起作用,因为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它,它?也会尝试在字符串内进行匹配。