对于另一个模式匹配问题,我很抱歉,但我正在努力寻找一个可以在git钩子中执行正则表达式的工具。它需要在Windows、Mac和Linux上运行。
此gnu grep适用于Windows和Linux,但不适用于Mac (因为bsd)
echo "feature/EOPP-234-foo" | grep -Po -e '[A-Z]{4}-\d{1,5}'这对Mac和Linux有效,但对windows不起作用(因为<git>\usr\bin\egrep似乎不起作用)
echo "feature/EOPP-234-foo" | egrep -o '[A-Z]{4}-\d{1,5}'sed可能是最常见的工具,但如果我能让它匹配:
echo "feature/EOPP-234-foo" | sed -n 's/^.*\([A-Z]{4}\-\d{1,5}\).*$/\1/p'我甚至尝试过bash匹配,但没有成功
[[ "feature/EOPP-234-foo" =~ ([A-Z]{4}-\d{1,5}) ]] && echo ${BASH_REMATCH[1]}有什么想法吗?
发布于 2021-10-15 10:50:18
当您需要使POSIX工具在Windows上运行时,您需要记住在命令两边使用双引号,而不是单引号。
此外,您还可以在所有这些环境中使用通用的POSIX ERE兼容正则表达式。这意味着\d必须替换为[0-9]或[[:digit:]],因为\d是一个仅符合PCRE的构造。
您可以使用
grep -Eo "[A-Z]{4}-[0-9]{1,5}"
grep -Eo "[A-Z]{4}-[[:digit:]]{1,5}"https://stackoverflow.com/questions/69583434
复制相似问题