【问题标题】:strange behavior in vim with negative look-behindvim中的奇怪行为,带有负面的后视
【发布时间】:2010-04-15 16:38:36
【问题描述】:

所以,我在 vim 中做这个搜索:

/\(\(unum\)\|\(player\)=\)\@<!\"1\"

并且正如预期的那样,它与具有以下内容的行不匹配:

player="1" 

但匹配具有以下内容的行:

unum="1" 

我做错了什么?这不是要否定的原子吗:\(\(unum\)\|\(player\)=\)

自然只是这样做:/\(\(unum\)\|\(player\)=\) 匹配 unum= 或 player=。

【问题讨论】:

  • echo matchstr("unum=", '\(\(unum\)\|\(player\)=\)') 输出 unum,而不是 unum=。

标签: regex vim find negative-lookbehind


【解决方案1】:

你的模式是

\(
    \(unum\)\|
    \(player\)=
\)\@<!"1"

相当于

\(
    \(unum\)\|
    \(player=\)
\)\@<!"1"

一定是这样的

\(
    \(unum\|player\)=
\)\@<!"1"

只需删除一个右括号和一个左括号。

而且,写\" 很奇怪:在您必须转义" 的情况下,您还需要转义斜线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    相关资源
    最近更新 更多