【发布时间】:2018-02-23 18:48:41
【问题描述】:
我需要在 grep 中指定正则表达式,以便它只匹配重复组的 0 或 4。
例如, 接受以下所有情况:
Hello,
Hello,abcd
但不接受以下所有情况:
Hello,a
Hello,ab
Hello,abc
我尝试了多种模式都没有成功。
echo "Hello,a" | grep -E "Hello,[[:alnum:]]{0,4}"`
Hello,a
echo "Hello,12" | grep -E "Hello,[[:alnum:]]{4}?"
Hello,12
echo "Hello,12" | egrep "Hello,([[:alnum:]]{4})?"
Hello,12
echo "Hello,12ab" | grep "Hello,([[:alnum:]]{4})?"
以下模式有效,但我想找到一种优雅的方式来做到这一点。
$ echo "Hello,123456," | grep -E "Hello,[[:alnum:]]{4},$|Hello,,$"
$ echo "Hello,12345," | grep -E "Hello,[[:alnum:]]{4},$|Hello,,$"
$ echo "Hello,1234," | grep -E "Hello,[[:alnum:]]{4},$|Hello,,$"
Hello,1234,
$ echo "Hello,123," | grep -E "Hello,[[:alnum:]]{4},$|Hello,,$"
$ echo "Hello,12," | grep -E "Hello,[[:alnum:]]{4},$|Hello,,$"
$ echo "Hello,1," | grep -E "Hello,[[:alnum:]]{4},$|Hello,,$"
$ echo "Hello,," | grep -E "Hello,[[:alnum:]]{4},$|Hello,,$"
Hello,,
【问题讨论】:
-
你试过
Hello,([[:alnum:]]{4})?吗? -
@LohmarASHAR,我做到了。它对我不起作用。
-
在你的正则表达式末尾添加
$,grep -E "Hello,[[:alnum:]]{4}?$" -
抱歉,我过去和现在都在打电话,还没有测试过。