我有一些代码如下:
data[:value] = some_val
data[:value_two] = someval2
data[:total_value_three] = someval3
我想替换所有未包含总数的代码, 我想要以下结果:
data[:total_value] = some_val
data[:total_value_two] = someval2
data[:total_value_three] = someval3
我在文本编辑器中有很多这样的代码, 替换我使用过这个正则表达式:
\[:[^total]([A-z_0-9]*)\]
我用这个代替它:
[:total_$1]
它正在选择正确的数据,但它正在删除第一个字符,即它变为total_alue
而不是total_value
。
答案 0 :(得分:2)
你正在寻找的是消极的向前看。你可以把它写成
\[:(?!total)([A-z_0-9]*)\]
(?!total)
这是一个负面的展望。它会检查:
不是后跟total
。 [:[^total]([A-z_0-9]*)\]
有什么问题?
[^total]
这是一个否定的角色类。匹配的内容是一个字符,不是t
或o
或a
或l
。