Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex vim中的Perl正则表达式?_Regex_Perl_Vim - Fatal编程技术网

Regex vim中的Perl正则表达式?

Regex vim中的Perl正则表达式?,regex,perl,vim,Regex,Perl,Vim,如何在Vim中编写这个perl regex replace命令?(摘自): 将现有的一个衬里制成管道过滤器 perl -pe 's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg' 然后使用1G!G或:%通过该过滤器传递当前文件,例如 :%!perl -pe 's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg' 我不

如何在Vim中编写这个perl regex replace命令?(摘自):


将现有的一个衬里制成管道过滤器

perl -pe 's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg'
然后使用
1G!G
:%通过该过滤器传递当前文件,例如

:%!perl -pe 's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg'

我不能代表
-I-0pe
标志说话,但正则表达式:

s/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg
将是:

s/^Insert\s*\(.*\).png\s*\n\(.*\)$/!\[\2](..\/figures\/\1-tn.png)/g

请注意,您必须退出捕获组,并且我在第二个捕获组中使用了
*
而不是
[^\n]*
。您不需要多行标志。

您要查找的很多内容取决于“魔法”设置的设置。请参阅
:help magic
,了解有关charctors vim的字面含义的更多信息。

您可以添加一个它应该匹配的示例吗?正如我所写的,我不确定有多少符号应该被转义。
\s*
应该匹配“”还是“*”?我假设是后者。对不起,我没有安装perl:-(当然,我忘了不是每个人都买得起perl:-)我不想免费使用它:-)有一个名为
eregex.vim
的插件,它可以自动从PCRE转换为vim的语法。
s/^Insert\s*\(.*\).png\s*\n\(.*\)$/!\[\2](..\/figures\/\1-tn.png)/g