正则表达式非贪婪匹配制表符

时间:2012-07-17 19:55:59

标签: regex vi

我不明白为什么如果给出以下行(带有设置列表的vi)

10.0.6.5^IVirtual^IVmware^IHTTP, MS SQL, Windows SVC^IcpHelpdesk $

为什么以下正则表达式:

^I.*?^I 

与我上面的字符串'Virtual'不匹配?我在VI搜索中使用下面的正则表达式并替换

:%s/^I.*?^I/replace/g

如果我使用

,则返回相同字符串的匹配项
^I.*^I

我会得到

10.0.6.5replaceIcpHelpdesk $

我试图用^I.*?^I说明的是第一个标签字符(^I)匹配任何内容(除了换行符之外的点)零次或多次(*?)直到你使用制表符(^I

进入下一个标记

我不知道我错过了什么,任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

你在这里谈论vim正则表达式吗?在这种情况下,非贪婪量词是\{-}

\t.\{-}\t

否则你可以通过不将制表符与否​​定组匹配来实现:

\t[^\t]*\t