单词边界搜索和感叹号在单词的结尾

时间:2014-10-16 09:30:34

标签: regex vim match boundary

我无法找到如何使用边界在末尾搜索带有感叹号的单词。

体育专业。 文本:

Do this!

搜索:

/\<this!\>

这与文本中的this!不符。 这个:

/\<this\!\>

我认为VIM认为它必须是Lookahead / Lookbehind Zero-Length Assertion 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

!不是关键字字符(在您的情况下,至少是),因此关键字到非关键字边界(\>是)的正则表达式断言将不匹配它。 的工作原理是这个

/\<this\>!/

但是在这里,\>是多余的,因为s显然是关键字字符,!不是。所以,只使用实际需要的断言(比如示例中的\<),以避免匹配foothis!),一切都很好。

或者,如果您的目的!属于某个词,并且您希望将其匹配,请通过

包含它
:setlocal iskeyword+=!

并使用\k进行匹配,例如\<\k\{5}\>找到所有5个字母(关键)字词。

答案 1 :(得分:1)

尝试此操作(或将\w替换为您的单词所包含的字符类):

/\<\w\+\!

!不是单词的一部分,因此\>之类的任何单词边界匹配都会在之前而不是之后匹配。