1

我不明白为什么如果给出以下行(vi with set list on)

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

为什么使用以下正则表达式:

^I.*?^I 

与我上面的行中的字符串“虚拟”不匹配?我在 VI 搜索和替换中使用下面的正则表达式

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

如果我使用,这将在同一字符串上返回不匹配

^I.*^I

我会得到

10.0.6.5replaceIcpHelpdesk $

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

我没有看到我错过了什么,任何帮助将不胜感激。谢谢

4

1 回答 1

1

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

\t.\{-}\t

否则,您可以通过不将制表符与否​​定组匹配来做到这一点:

\t[^\t]*\t
于 2012-07-17T20:14:24.023 回答