使用sed做正则匹配时发现一个问题:
为了匹配一个特定英文之后的数字(例如id123,取出123),写了下面的正则
echo "s1" | sed -rn 's/^.*s([0-9]*).*$/\1/p'
输出为1,匹配到了s1中的数字1
echo "s1s" | sed -rn 's/^.*s([0-9]*).*$/\1/p'
输出为空,没有匹配到s1?
为什么和我想的不一样呢?
s[0-9]*为什么不匹配s1s呢,我前后写的都是.*
呀。
不了解正则匹配的机制,请大神帮忙给讲讲。
谢谢谢谢~