[{"data":1,"prerenderedAt":141},["ShallowReactive",2],{"blog:\u002Fblog\u002F2016\u002F07\u002F02\u002Fvim-use-regular\u002F":3},{"id":4,"title":5,"body":6,"categories":126,"comments":128,"date":129,"description":130,"draft":131,"extension":132,"legacySlug":133,"meta":134,"navigation":128,"path":135,"seo":136,"stem":137,"tags":138,"updated":139,"__hash__":140},"blog\u002Fblog\u002F2016\u002F07\u002F02\u002Fvim-use-regular.md","vim中使用正则表达式",{"type":7,"value":8,"toc":116},"minimark",[9,14,25,29,35,39,45,49,55,58,64,67,73,76,82,86,92,96,102,106,112],[10,11,13],"h3",{"id":12},"一使用正则表达式的命令","一、使用正则表达式的命令",[15,16,21],"pre",{"className":17,"code":19,"language":20},[18],"language-text","使用正则表达式的命令最常见的就是 \u002F （搜索）命令。其格式如下：\n\n\u002F正则表达式\n另一个很有用的命令就是 :s（替换）命令，将第一个\u002F\u002F之间的正则表达式替换成第二个\u002F\u002F之间的字符串。\n\n:s\u002F正则表达式\u002F替换字符串\u002F选项\n在学习正则表达式时可以利用 \u002F 命令来练习。\n","text",[22,23,19],"code",{"__ignoreMap":24},"",[10,26,28],{"id":27},"二元字符","二、元字符",[15,30,33],{"className":31,"code":32,"language":20},[18],"元字符是具有特殊意义的字符。使用元字符可以表达任意字符、行首、行尾、某几个字符等意义。\n",[22,34,32],{"__ignoreMap":24},[36,37,38],"h5",{"id":38},"元字符一览",[15,40,43],{"className":41,"code":42,"language":20},[18],"元字符 说明\n.   匹配任意一个字符\n[abc]   匹配方括号中的任意一个字符。可以使用-表示字符范围，\n如[a-z0-9]匹 配小写字母和阿拉伯数字。\n[^abc]  在方括号内开头使用^符号，表示匹配除方括号中字符之外的任意字符。\n\\d  匹配阿拉伯数字，等同于[0-9]。\n\\D  匹配阿拉伯数字之外的任意字符，等同于[^0-9]。\n\\x  匹配十六进制数字，等同于[0-9A-Fa-f]。\n\\X  匹配十六进制数字之外的任意字符，等同于[^0-9A-Fa-f]。\n\\w  匹配单词字母，等同于[0-9A-Za-z_]。\n\\W  匹配单词字母之外的任意字符，等同于[^0-9A-Za-z_]。\n\\t  匹配\u003CTAB>字符。\n\\s  匹配空白字符，等同于[ \\t]。\n\\S  匹配非空白字符，等同于[^ \\t]。\n",[22,44,42],{"__ignoreMap":24},[36,46,48],{"id":47},"查找字符-等则需要在前面用-符号表示这不是元字符而只是普通字符","查找字符 *、.、\u002F等，则需要在前面用 \\ 符号，表示这不是元字符，而只是普通字符",[15,50,53],{"className":51,"code":52,"language":20},[18],"元字符 说明\n\\*  匹配 * 字符。\n\\.  匹配 . 字符。\n\\\u002F  匹配 \u002F 字符。\n\\\\  匹配 \\ 字符。\n\\[  匹配 [ 字符。\n",[22,54,52],{"__ignoreMap":24},[36,56,57],{"id":57},"表示数量的元字符",[15,59,62],{"className":60,"code":61,"language":20},[18],"元字符 说明\n*   匹配0-任意个\n\\+  匹配1-任意个\n\\?  匹配0-1个\n\\{n,m}  匹配n-m个\n\\{n}    匹配n个\n\\{n,}   匹配n-任意个\n\\{,m}   匹配0-m个\n",[22,63,61],{"__ignoreMap":24},[36,65,66],{"id":66},"表示位置的符号",[15,68,71],{"className":69,"code":70,"language":20},[18],"元字符 说明\n$   匹配行尾\n^   匹配行首\n\\\u003C  匹配单词词首\n\\>  匹配单词词尾\n",[22,72,70],{"__ignoreMap":24},[36,74,75],{"id":75},"使用例",[15,77,80],{"className":78,"code":79,"language":20},[18],"\u002Fchar\\s\\+[A-Za-z_]\\w*;                 \" 查找所有以char开头，之后是一个以上的空白，\n                                        最后是一个标识符和分号\n\u002F\\d\\d:\\d\\d:\\d\\d                        \" 查找如 17:37:01 格式的时间字符串\n:g\u002F^\\s*$\u002Fd                             \" 删除只有空白的行\n:s\u002F\\\u003Cfour\\>\u002F4\u002Fg                        \" 将所有的four替换成4，但是fourteen中的four不替换\n",[22,81,79],{"__ignoreMap":24},[10,83,85],{"id":84},"三替换变量","三、替换变量",[15,87,90],{"className":88,"code":89,"language":20},[18],"在正则表达式中使用 \\( 和 \\) 符号括起正则表达式，即可在后面使用\\1、\\2 等变量来访问 \\( 和\\) 中的内容。\n\n使用例\n\n\u002F\\(a\\+\\)[^a]\\+\\1\n                        \n\" 查找开头和结尾处a的个数相同，中间有1个或多个非a字符的字符串，如 aabbbaa，aaacccaaa，但是不匹配 abbbaa\n\n:s\u002F\\(\\w\\+\\)\\s\\+\\(\\w\\+\\)\u002F\\2\\t\\1                            \n\n\" 将 data1 data2 修改为 data2 data1\n",[22,91,89],{"__ignoreMap":24},[10,93,95],{"id":94},"四函数式","四、函数式",[15,97,100],{"className":98,"code":99,"language":20},[18],"在替换命令 s\u002F\u002F\u002F 中可以使用函数表达式来书写替换内容，格式为\n\n:s\u002F替换字符串\u002F\\=函数式\n在函数式中可以使用 submatch(1)、submatch(2) 等来引用 \\1、\\2 等的内容，而submatch(0)可以    引用匹配的整个内容。\n\n使用例\n\n:%s\u002F\\\u003Cid\\>\u002F\\=line(\".\")                               \" 将各行的 id 字符串替换为行号\n:%s\u002F\\(\\\u003C\\w\\+\\>\\)\u002F\\=(line(\".\")-10) .\".\". submatch(1)  \" 将每行开头的单词替换为 (    号-10).单词 的格式，\" 如第11行的 word 替换成 1. word\n",[22,101,99],{"__ignoreMap":24},[10,103,105],{"id":104},"五与perl正则表达式的区别","五、与Perl正则表达式的区别",[15,107,110],{"className":108,"code":109,"language":20},[18],"元字符的区别\n\nVim语法       Perl语法      含义\n\\+          +           1-任意个\n\\?          ?           0-1个\n\\{n,m}      {n,m}       n-m个\n\\(和\\)       (和)         分组\n",[22,111,109],{"__ignoreMap":24},[10,113,115],{"id":114},"注参考自网络侵权请告知","注：参考自网络，侵权请告知",{"title":24,"searchDepth":117,"depth":117,"links":118},2,[119,121,122,123,124,125],{"id":12,"depth":120,"text":13},3,{"id":27,"depth":120,"text":28},{"id":84,"depth":120,"text":85},{"id":94,"depth":120,"text":95},{"id":104,"depth":120,"text":105},{"id":114,"depth":120,"text":115},[127],"vim",true,"2016-07-02 16:30:55","一、使用正则表达式的命令 使用正则表达式的命令最常见的就是 \u002F （搜索）命令。其格式如下： \u002F正则表达式 另一个很有用的命令就是 :s（替换）命令，将第一个\u002F\u002F之间的正则表达式替换成第二个\u002F\u002F之间的字符串。 :s\u002F正则表达式\u002F替换字符串\u002F选项 在学习正则表达式时可以利用 \u002F 命令来练习。 二、元字符",false,"md","vim-use-regular",{},"\u002Fblog\u002F2016\u002F07\u002F02\u002Fvim-use-regular",{"title":5,"description":130},"blog\u002F2016\u002F07\u002F02\u002Fvim-use-regular",[127],null,"b1fK7OSsc4_VSOm76XvegNolSzTfuUq45ia8pw65Vis",1783807996125]