Vim中的正则表达式以匹配组捕获

Que*_*int 7 regex vim

我想找到包含重复两次相同字符串的单词.(例如wookokss(ok/ok),ccsssscc(ss/ss)).我认为表达是\(\w*\)\0.

另一种尝试是找到重复两次的相同字符串组成的单词.我的回答是\<\(\w*\)\0\>.(单词开头+分组(单词)+组捕获+单词结尾)

但它们不起作用.有人能帮助我吗?

ryu*_*iro 5

要查找单词中重复两次的字符串,长度超过两个字符,可以使用

/\(\w\{2,}\)\1
Run Code Online (Sandbox Code Playgroud)

要匹配包含上述字符串的整个单词,您可以使用

/\<\w\{-}\(\w\{2,}\)\1\w\{-}\>
Run Code Online (Sandbox Code Playgroud)

一点点解释

  • \1-这是由第一子表达式的匹配的相同的字符串相匹配\(\)\0匹配的整个匹配的模式)
  • \{n,}- 至少匹配n前面的原子,尽可能多
  • \{-} - 匹配 0 个或多个前面的原子,尽可能少
  • \w- 字符 ( [0-9A-Za-z_])
  • \< - 一个词的开头
  • \> - 一个词的结尾

更多在 :help pattern


bob*_*ble 3

1.) 包含重复两次的相同字符串的单词。(例如 wookokss(好的/好的),

要查找包含两个或多个重复单词字符的单词,请尝试

\(\w\{2,}\)\1
Run Code Online (Sandbox Code Playgroud)

\1与第一组中捕获的内容匹配。

2.) 找到由重复两次的相同字符串组成的单词...

捕获\w\+一个或多个单词字符,然后\1捕获第一组中捕获的内容

\<\(\w\+\)\1\>
Run Code Online (Sandbox Code Playgroud)

应该是关于它的。看看这个教程