egrep" [\ w] +"与单词

时间:2015-07-01 17:59:42

标签: regex

在linux中,当我尝试一个单词的简单egrep它不匹配。以下不会返回任何结果,但我希望两个案例中的样本匹配:

echo "sample"|egrep "[\w]+"
echo "sample"|egrep "[\w]"

但是,以下内容会返回示例

这个词
echo "sample"|egrep "[\w]*"
sample

1 个答案:

答案 0 :(得分:2)

使用 e xtended匹配,\w之类的实体不会在方括号内展开。因此,避免它们:

echo sample | grep -E '\w+'

egrepgrep -E的弃用别名。)

如果你真的想使用方括号,那么使用 p erl正则表达式:

echo sample | grep -P '[\w]+'

(注意,这是一个特定于GNU的非POSIX功能。)

最后,为了您的兴趣,[\w]* -Egrep不匹配,但匹配零个或多个字符。并且假设每个字符串中至少包含零个字符,echo another.sample | grep --color=always -E '[\w]*' echo another.sample | grep --color=always -E '\w+' 显示每一行。比较:

grep -Eo

您将看到第一个命令返回黑色字符串(表示它未与任何字符匹配)。第二个将突出显示另一个示例,但不突出显示点,这意味着它已正确匹配这两个词。您可能还想尝试使用while (y != NULL && x == y->right) ^^^