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

Regex 为什么POSIX正则表达式^a*$”;匹配包含美元符号的字符串?,regex,unix,posix,Regex,Unix,Posix,我希望正则表达式^[a-z]*$不会匹配随机$something 但是,当我在shell上尝试时,这与此匹配: ~# echo "random$something" | grep "^[a-z]*$" random ~# echo "aaaaa$something" | grep "^a*$" aaaaa 为什么会这样 我在Solaris和RedHat Linux上都看到过这种情况。请注意 echo "aaaaa$something" 没有grep,结果是 aaaaa 这是因为shell

我希望正则表达式
^[a-z]*$
不会匹配
随机$something

但是,当我在shell上尝试时,这与此匹配:

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

~# echo "aaaaa$something" | grep "^a*$"
aaaaa
为什么会这样


我在Solaris和RedHat Linux上都看到过这种情况。

请注意

echo "aaaaa$something"
没有grep,结果是

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

请注意,如果你只是这样做

echo "aaaaa$something"
没有grep,结果是

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