Regex 在unix中的sed上使用正则表达式时出现意外输出
对于上述命令,输出为Regex 在unix中的sed上使用正则表达式时出现意外输出,regex,unix,sed,Regex,Unix,Sed,对于上述命令,输出为 echo "abc123" | sed s/[a-z]*/TEXT/g 它不应该是text123?这是因为您使用的量词*与0个或多个[a-z]匹配。首先,它匹配abc,由于使用了g(全局)模式,它还匹配1、2、3之后的空文本 但是,如果通过使用删除*来调整正则表达式 TEXT1TEXT2TEXT3TEXT 然后你会得到: echo "abc123" | sed 's/[a-z]/TEXT/g' 谢谢,但是当我执行echo“abc123”| grep--color“[a
echo "abc123" | sed s/[a-z]*/TEXT/g
它不应该是
text123
?这是因为您使用的量词*
与0个或多个[a-z]
匹配。首先,它匹配abc,由于使用了g
(全局)模式,它还匹配1
、2
、3
之后的空文本
但是,如果通过使用删除*
来调整正则表达式
TEXT1TEXT2TEXT3TEXT
然后你会得到:
echo "abc123" | sed 's/[a-z]/TEXT/g'
谢谢,但是当我执行echo“abc123”| grep--color“[a-z]*”时,它会给出abc123(并且只有abc是彩色的)。你认为
grep
会如何给1,2,3
之后的空匹配着色?我不理解的是为什么命令echo“abc123”| sed s/[a-z]*/TEXT/g它给出一个输出,数字之间有一个单词TEXT。我在回答中已经解释过了*
表示0或更多,因此它也匹配1、2、3
之后的空字符串。查看与echo“abc123”| sed-E's/[a-z]+/TEXT/g'
的区别,即+
而不是*
TEXTTEXTTEXT123