對于另一個模式匹配問題,我很抱歉,但我正在努力尋找一個可以在 git hook 中執行正則運算式的工具。它需要在 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]}
有任何想法嗎?
uj5u.com熱心網友回復:
當您需要使 POSIX 工具在 Windows 上運行時,您需要記住在命令周圍使用雙引號,而不是單引號。
此外,您可以在所有這些環境中使用通用的 POSIX ERE 兼容正則運算式。這意味著\d必須替換為僅符合 PCRE 的構造,[0-9]或者[[:digit:]]原樣替換\d。
您可以使用
grep -Eo "[A-Z]{4}-[0-9]{1,5}"
grep -Eo "[A-Z]{4}-[[:digit:]]{1,5}"
uj5u.com熱心網友回復:
我建議:
echo "feature/EOPP-234-foo" | grep -o -e "[A-Z]\{4\}-[0-9]\{1,5\}"
或者
[[ "feature/EOPP-234-foo" =~ ([A-Z]{4}-[0-9]{1,5}) ]] && echo "${BASH_REMATCH[1]}"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/317334.html
上一篇:如何在git中禁用多次提交?
