VIM/Perl的正则表达式的标签匹配问题
问题描述:
我有一个看起来像这样的数据:[*]VIM/Perl的正则表达式的标签匹配问题
[Shift]);[Ctrl][Ctrl+S][Left mouse-click][Backspace][Ctrl]
我想找到所有标签这个字鼠标在其中。考虑到非贪婪符一致,我想这在Vim的:\[.\{-}mouse.\{-}\]
,但取得这样的结果,
[Shift]);[Ctrl][Ctrl+S][Left mouse-click]
而不仅仅是需要,
[Left mouse-click]
任何想法?最终,我还需要Perl语法的这种模式,所以如果任何人有一个解决方案在Perl中,也将不胜感激。
答
\[[^]]*mouse[^[]*\]
即,匹配一个开口支架,然后任意数量的未闭括号,然后在“鼠标”,则任何数量的非开括号的字符,最后是文字右括号。在Perl中应该是一样的。
@Rob肯尼迪 - 你']'不正确地转义。 – manojlds 2011-05-30 05:10:56
他们都很好,@Manojlds。你是否不知道当'[^'后面紧接着']','''是从字面上而不是作为字符集的结尾?查看你自己:'echo'[Shift]); [Ctrl] [Ctrl + S] [鼠标左键单击] [Backspace] [Ctrl]'| perl -nE'm /(\ [[^]] * mouse [^ [] * \])/;说$ 1''。引用[perlrecharclass](http://perldoc.perl.org/perlrecharclass.html):“如果'''是括号字符类的第一个字符(或第二个字符,如果第一个字符是插入字符),它会不代表班级的结束(因为你不能有空班)......“ – 2011-05-30 06:10:45
感谢您的解释。它是特定于Perl吗?不符合这里 - http://regexr.com?2tsej – manojlds 2011-05-30 06:18:06