我想找到所有行而不是一个双号。
我知道怎么在一条线上找到双号:
/\zs\(\d\d\d\.\d\d\).*\1\ze
但我不知道如何在没有这个双号的情况下找到行(上面的正则表达式的负匹配)
这个部分是我想要的:
/^\(\(.*\d\d\d\.\d\d.*\)\{2,}\)\@!.*\1.*$
体育专业.:
找不到行201.12 text 201.12
- > OK
但是找不到行201.12 text 203.12
- >不行
必须找到最后一行,因为数字不一样。
我错了什么?
答案 0 :(得分:2)
试试这个:
/^.*$\&\%(.*\(\d\{3}\.\d\{2}\).*\1\)\@!.*
或魔术:
/\v^.*&%(.*(\d{3}\.\d{2}).*\1)@!.*
实际上,\&
不是必需的。这个更简单:
\v^%(.*(\d{3}\.\d{2}).*\1)@!.*
答案 1 :(得分:1)
我跟这个:
.*(\d\d\d\.\d\d).*(?=\d\d\d\.\d\d)(?!\1).*
?=是一个不消耗的运算符。它在equals符号的右侧查找正则表达式,但是要通过以下表达式检查它。因此,它再次测试字符串。然后它检查是否包含第一个匹配。如果找到,查询失败(因为?!) - 如果没有找到它继续下一个。*
答案 2 :(得分:1)
这个有点棘手。这是基于先行模式,允许您这样做,假设每行有2个十进制数字:
Service "XEXDB" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
Service "xe" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
The command completed successfully