我无法找到如何使用边界在末尾搜索带有感叹号的单词。
体育专业。 文本:
Do this!
搜索:
/\<this!\>
这与文本中的this!
不符。
这个:
/\<this\!\>
我认为VIM认为它必须是Lookahead / Lookbehind Zero-Length Assertion 我该如何解决这个问题?
答案 0 :(得分:4)
!
不是关键字字符(在您的情况下,至少是),因此关键字到非关键字边界(\>
是)的正则表达式断言将不匹配它。 的工作原理是这个
/\<this\>!/
但是在这里,\>
是多余的,因为s
显然是关键字字符,!
不是。所以,只使用实际需要的断言(比如示例中的\<
),以避免匹配foothis!
),一切都很好。
或者,如果您的目的!
属于某个词,并且您希望将其匹配,请通过
:setlocal iskeyword+=!
并使用\k
进行匹配,例如\<\k\{5}\>
找到所有5个字母(关键)字词。
答案 1 :(得分:1)
尝试此操作(或将\w
替换为您的单词所包含的字符类):
/\<\w\+\!
!
不是单词的一部分,因此\>
之类的任何单词边界匹配都会在之前而不是之后匹配。