Regex Vim/Perl正则表达式标记匹配问题

Regex Vim/Perl正则表达式标记匹配问题,regex,perl,vim,Regex,Perl,Vim,我有如下数据: [Shift]);[Ctrl][Ctrl+S][Left mouse-click][Backspace][Ctrl] 我想找到所有[.*]标记中都有鼠标一词。记住非贪婪说明符,我在Vim中尝试了这一点:\[.\{-}鼠标。\{-}\],但这产生了这个结果 [Shift]);[Ctrl][Ctrl+S][Left mouse-click] 而不仅仅是想要的 [Left mouse-click] 有什么想法吗?最终,我还需要Perl语法中的这个模式,所以如果有人有Perl解决方

我有如下数据:

[Shift]);[Ctrl][Ctrl+S][Left mouse-click][Backspace][Ctrl]
我想找到所有[.*]标记中都有鼠标一词。记住非贪婪说明符,我在Vim中尝试了这一点:
\[.\{-}鼠标。\{-}\]
,但这产生了这个结果

[Shift]);[Ctrl][Ctrl+S][Left mouse-click]
而不仅仅是想要的

[Left mouse-click]
有什么想法吗?最终,我还需要Perl语法中的这个模式,所以如果有人有Perl解决方案,我也会非常感激

\[[^]]*mouse[^[]*\]
也就是说,匹配一个文字开头方括号,然后匹配任意数量的非结束方括号的字符,然后匹配“鼠标”,然后匹配任意数量的非开始方括号,最后匹配文字结束方括号。在Perl中应该是相同的


也就是说,匹配一个文字开头方括号,然后匹配任意数量的非结束方括号的字符,然后匹配“鼠标”,然后匹配任意数量的非开始方括号,最后匹配文字结束方括号。在Perl中应该是相同的。

您可以使用以下正则表达式:

\[[^\]]*mouse.*?\]

您可以使用以下正则表达式:

\[[^\]]*mouse.*?\]

@罗伯·肯尼迪-你的
]
没有正确逃脱。他们都很好,@Manojlds。您是否不知道,当
[^
后面紧跟着
]
时,
]
会按字面意思而不是作为字符集的结尾?自己看:
echo'[Shift]);[Ctrl][Ctrl+S][鼠标左键点击][Backspace][Ctrl]'| perl-nE'm/(\[^]]*鼠标[^[]*\]/;说$1'
。引用:“如果
]
是带括号字符类的第一个字符(如果第一个字符是插入符号,则为第二个字符),则它并不表示该类的结束(因为不能有空类)…”感谢您的解释。它是perl特有的吗?这里不匹配-它不是Perl特有的,@Manojlds。我在Vim中给出的模式也匹配。这是我在发布答案之前测试的地方@罗伯·肯尼迪-你的
]
没有正确逃脱。他们都很好,@Manojlds。您是否不知道,当
[^
后面紧跟着
]
时,
]
会按字面意思而不是作为字符集的结尾?自己看:
echo'[Shift]);[Ctrl][Ctrl+S][鼠标左键点击][Backspace][Ctrl]'| perl-nE'm/(\[^]]*鼠标[^[]*\]/;说$1'
。引用:“如果
]
是带括号字符类的第一个字符(如果第一个字符是插入符号,则为第二个字符),则它并不表示该类的结束(因为不能有空类)…”感谢您的解释。它是perl特有的吗?这里不匹配-它不是Perl特有的,@Manojlds。我在Vim中给出的模式也匹配。这是我在发布答案之前测试的地方。