2017-04-04 94 views
1

在vim中,我需要在引号中搜索所有字符串,例如“富”用Vim引号括起来的搜索字符串

难道一见这个正则表达式的问题? E486:找不到模式\ '([^'] *)”

:\/'([^']*)' 

Regex Tester

+0

你好(对不起我的礼貌) – AikenCura

+0

只需使用'/'([^'] *)' – anubhava

+0

供参考:有> 50个正则表达式,大多互不兼容。 Vim使用这些方言之一,而正则表达式测试程序站点使用其他方言,与Vim不兼容。我还没有看到这样一个了解Vim正则表达式的网站。 –

回答

1

第一个问题是您发现的使用比较混乱。如果您只想找到 ,请使用/。冒号不是必需的(表示 命令模式)。如果你正在使用find为一个范围(基本上是相同的 的事情,/只是一个空的命令和范围),您可以使用冒号, 但无论哪种方式逃避第一个斜杠是没有必要的。

的另一个主要问题是,括号默认情况下需要进行转义 如果你的意思是捕获组。所有这一切都取决于你的 'magic'选项,在阅读帮助的/magic主题(你可以做一个 :h magic)强烈推荐。随着“香草” Vim的设置, 正则表达式,你需要看起来住这样的:

/'\([^']*\)' 

有了非常神奇的使能(通过使用\v原子),这可以简化 你原来的设计:

/\v'([^']*)' 
1

或者您可以使用

\v'(\a+)'

这个表达式执行大于y相似我们的,除了遇到嵌套的引号。在文本:

The user's first 'answer'.

正则表达式\v'(\a+)'将捕获answer而你原来的正则表达式(由sidyll校正)\v'([^']*)'将捕获's first '

相关问题