在Linux正则使用过程中,默认使用的是贪婪模式,如
贪婪模式常用的量词有:
{m,n}
{m,}
?
*
+
如果改成非贪婪模式要量词后面加上一个问号?,只需这样:
{m,n}?
{m,}?
??
*?
+?
在我执行的时候发现?不起作用,加上后匹配不到任何内容了。
需要用[^/]* 代替*?,来使用非贪婪模式,如下:
sed -i 's@abc-\([^/]*\)-\([^\]*\)\.ef@abc-\1-cde-\2.ef@g' test.txt
其中括号是用来获取字串,\1,\2是用来展示对应的字串。
本文介绍了在Linux中如何使用正则表达式的非贪婪模式进行字符串匹配。通过添加问号?将贪婪模式转换为非贪婪模式,但遇到问题时,可以使用[^/]*代替*?来实现非贪婪匹配。示例中展示了在sed命令中应用非贪婪模式替换字符串的方法,强调了括号用于捕获子串,1和2用于引用匹配的子串。
364

被折叠的 条评论
为什么被折叠?



