我正在尝试在 gvim 中搜索以下模式:
arrayA[*].entryx
希望它能匹配以下内容:
arrayA[size].entryx
arrayA[i].entryx
arrayA[index].entryx
但它会打印消息说“未找到模式”,即使文件中存在上述行。
arrayA[.].entryx
仅匹配 arrayA[i].entryx 即 [] 大括号之间只有一个字符。
如何匹配 [] 大括号之间的多个字符?
最佳答案
这是 PCRE 表达式详细信息
/arrayA\[[^]]*]\.entryx/
^^^^^ # 0 or more characters before a ']'
^^ ^^ # Escaped '[' & '.'
^ # Closing ']' -- does not need to be escaped
^^^^^^ ^^^^^^ # Literal parts
如果你想查找arrayA[X].entryx
,[]
中至少有一个字符,
您需要将 \[[^]]*
替换为 \[[^]]\+
ps:请注意我的编辑 - 我已将 \*
更改为 *
- 你也无法逃避它。
但是,您需要转义 +
:-)
更新
您的评论:
虽然我的评论回答了您关于广泛转义 ]
的问题,
有关更多详细信息,请参阅 Perl Character Class详情。
具体来说,括号字符类中的特殊字符
部分。
[
字符启动字符类 (CCL) 后,需要转义的规则会发生变化。
关于regex - gvim搜索使用正则表达式匹配多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688592/