如何在 MINGW64 的 grep 中使用方括号?
How to use square brackets in grep for MINGW64?
目前,我有以下正则表达式。它应该匹配我正在回应的字符串:
echo "TBGFSGFI22800_D_REP_D_RISIKOEINHEIT" | grep -E 'TBGFSGFI\d\d\d\d\d[A-Za-z_]{1,100}'
它在我的 Mac 和 Notepad++ 中的 OsX 中按预期工作,但在 Bash for windows (MINGW64) 中我得到一个空字符串。我如何使用带标志的 grep,或者我应该如何重写正则表达式以匹配模式?
我的 grep 版本是 3.1。 Bash:4.4.23(1)
提前感谢您的帮助!
您正在使用带有 -E
选项的 POSIX ERE 正则表达式,并且该风格不支持 \d
结构。您还需要 -o
选项来实际提取匹配项。
注意你不需要重复\d
五次,你可以使用范围量词,\d{5}
.
您可以使用
echo "TBGFSGFI22800_D_REP_D_RISIKOEINHEIT" | grep -Po "TBGFSGFI\d{5}[A-Za-z_]{1,100}"
在哪里
-P
表示正则表达式具有 PCRE 风格
-o
仅提取匹配项
TBGFSGFI\d{5}[A-Za-z_]{1,100}
- 匹配 TBGFSGFI
的正则表达式,然后是任意五位数字,然后是 1-100 个 ASCII 字母或 _
.
目前,我有以下正则表达式。它应该匹配我正在回应的字符串:
echo "TBGFSGFI22800_D_REP_D_RISIKOEINHEIT" | grep -E 'TBGFSGFI\d\d\d\d\d[A-Za-z_]{1,100}'
它在我的 Mac 和 Notepad++ 中的 OsX 中按预期工作,但在 Bash for windows (MINGW64) 中我得到一个空字符串。我如何使用带标志的 grep,或者我应该如何重写正则表达式以匹配模式?
我的 grep 版本是 3.1。 Bash:4.4.23(1)
提前感谢您的帮助!
您正在使用带有 -E
选项的 POSIX ERE 正则表达式,并且该风格不支持 \d
结构。您还需要 -o
选项来实际提取匹配项。
注意你不需要重复\d
五次,你可以使用范围量词,\d{5}
.
您可以使用
echo "TBGFSGFI22800_D_REP_D_RISIKOEINHEIT" | grep -Po "TBGFSGFI\d{5}[A-Za-z_]{1,100}"
在哪里
-P
表示正则表达式具有 PCRE 风格-o
仅提取匹配项TBGFSGFI\d{5}[A-Za-z_]{1,100}
- 匹配TBGFSGFI
的正则表达式,然后是任意五位数字,然后是 1-100 个 ASCII 字母或_
.