将`与(和)结合使用时混淆正则表达式行为

时间:2011-03-27 22:03:38

标签: mysql sql regex vim

为了解决mysql 5.0到5.1的兼容性问题,我试图改变这种模式:

KEY `brand_id` (`brand_id`) USING BTREE

到此:

KEY `brand_id` USING BTREE (`brand_id`)

在vim中运行以下正则表达式可以找到问题的所有出现位置:

KEY `.*` \(.*\) USING BTREE

因此,我尝试将其修改为以下替换字符串,但它无法再找到匹配的字符串。为什么呢?

%s/KEY (`.*`) (\(.*\)) USING BTREE/KEY \1 USING BTREE (\2)/gc

1 个答案:

答案 0 :(得分:2)

我不知道为什么,但是在Vim中,你需要逃避匹配的括号,并且当它们被逐字逐句时不要管它们。尝试:

%s/KEY \(`.*`\) \((.*)\) USING BTREE/KEY \1 USING BTREE \2/gc