0
结合`为了解决一个MySQL 5.0到5.1的兼容性的问题时,我试图改变这一格局:混乱的正则表达式的行为与(
KEY `brand_id` (`brand_id`) USING BTREE
这样:
KEY `brand_id` USING BTREE (`brand_id`)
在vim中运行以下正则表达式找到所有发生的问题:
KEY `.*` \(.*\) USING BTREE
所以,我试着只是修改这个到foll由于替换字符串,但它不能再找到匹配的字符串。为什么?
%s/KEY (`.*`) (\(.*\)) USING BTREE/KEY \1 USING BTREE (\2)/gc
我会+1任何人谁告诉我如何反转这种奇怪的行为一劳永逸...... – mvds 2011-03-27 22:10:27
这样做。在替换字符串中我还有一些额外的parens,所以它最终以如下方式工作:%s/KEY \('。*'\)\((。*)\)使用BTREE/KEY \ 1使用BTREE \ 2/gc – squawknull 2011-03-27 22:11:27
如果您在搜索模式中启用了['非常神奇模式'](http://vimdoc.sourceforge.net/htmldoc/pattern.html#/magic),那么它会反转转义要求,这样'() '组并且捕获它的内容,并且字面括号匹配必须被转义'\(\)'。我发现这更符合我在其他地方使用正则表达式的经验,所以更愿意总是使用非常神奇的模式。在这种情况下,搜索模式将是'\ vKEY('。*')(\(。* \))USING BTREE'。 – nelstrom 2011-03-28 07:09:37