为什么POSIX正则表达式“^ a * $”匹配包含美元符号的字符串?

时间:2012-11-21 13:55:49

标签: regex unix posix

我希望正则表达式^[a-z]*$random$something

不匹配

然而,当我在shell上尝试它时,这匹配:

~# echo "random$something" | grep "^[a-z]*$"
random

~# echo "aaaaa$something" | grep "^a*$"
aaaaa

为什么会这样?

我在Solaris和RedHat Linux上都看过这个。

1 个答案:

答案 0 :(得分:4)

请注意,如果您只是

echo "aaaaa$something"

没有grep,结果是

aaaaa

这是因为shell试图将$ something解释为变量。 如果您将双引号更改为单引号,您将看到预期的行为;这没有结果。