提问人:Alexey Starinsky 提问时间:9/20/2023 最后编辑:Ed MortonAlexey Starinsky 更新时间:9/22/2023 访问量:58
grep 适用于 \s,但不适用于 \s+
grep works with \s, but not with \s+
问:
以下命令适用于\s
echo "\"Using Android 10\"" | grep "\".*\sAndroid\s.*\""
和印刷品
"Using Android 10"
但是,如果按如下方式添加 +:
echo "\"Using Android 10\"" | grep "\".*\sAndroid\s+.*\""
模式停止匹配。
怎么了?\s+
答:
4赞
Gilles Quénot
9/20/2023
#1
错误的是又名基本正则表达式中缺少的反斜杠:BRE
echo '"Using Android 10"' | grep '".*\sAndroid\s\+.*"'
^
如果您不想使用反斜杠,请使用 aka Extended REgex:ERE
echo '"Using Android 10"' | grep -E '".*\sAndroid\s+.*"'
或使用 Perl 兼容正则表达式:PCRE
echo '"Using Android 10"' | grep -P '".*\sAndroid\s+.*"'
如果您确实支持该开关,这是最可靠的,因为执行此操作的方法有:-P
POSIX
[[:space:]]\+
[[:space:]]{1,}
最新版本的 支持 。\s
GNU
grep
评论
0赞
demitt
9/21/2023
-P
如果您想使用成熟的正则表达式 (PCRE),这是最好的方法。在这种情况下,您不必转义正则表达式元符号(例如,)。+
0赞
Gilles Quénot
9/22/2023
看来我已经回答了这个问题
评论
s
+
+
grep
grep