VIM基础正则表达式`\(x\)\(y\)z\2\1`的可匹配值咨询
Vim基础正则
\(x\)\(y\)z\2\1匹配规则说明 可匹配的字符串
这个正则可以匹配的典型字符串是xyzyx,规则拆解如下:
- Vim基础正则(Basic Regular Expression, BRE)中,
\(和\)包裹的内容为捕获组,会暂存匹配到的内容供后续反向引用- 第一个捕获组
\(x\):匹配字符x,记为组1 - 第二个捕获组
\(y\):匹配字符y,记为组2
- 第一个捕获组
- 中间的
z匹配字面量字符z \2是反向引用语法,代表和第2个捕获组完全一致的内容,即y\1是反向引用语法,代表和第1个捕获组完全一致的内容,即x- 各部分拼接后,完整匹配序列为
x+y+z+y+x,也就是xyzyx
无法匹配xyz的原因
xyz长度仅为3,而这个正则要求的匹配长度固定为5:两个捕获组各占1位、字面量z占1位、两个反向引用各占1位,总长度为5,自然无法匹配长度不足的xyz。如果仅需匹配xyz,直接使用普通正则xyz即可。
内容的提问来源于stack exchange,提问作者cber11
相关产品推荐
相关产品推荐

