关于shell的sed正则表达式用法问题
发布网友
发布时间:2022-06-08 16:13
我来回答
共1个回答
热心网友
时间:2024-11-29 23:11
正则匹配中,点号.表示任意一个字符,*表示重复前面一个字符(这里就是点号.)0次或多次。
\(.*\)a表示要以一个a字符结尾,而默认情况下*具有贪婪特性,会匹配符合要求的最大数目的字符。
因此 .* 就匹配到了最后一个a前面的所有字符。
\( \) 这种结构在sed的替换命令里是组的概念,在后面替换时可以用\n来引用。
第一个组用\1,第二个组用\2,依此类推。
这个命令的作用就是:将字符串中最后一个a字符替换为b,其余不变。追问贪婪是个什么概念啊?
追答贪婪 --> 会匹配符合要求的最大数目的字符
.* 可以匹配a,也可以匹配aa,甚至aaaaaa,都可以匹配。
在这种情况下,贪婪,就意味着会匹配尽可能多的字符。