zoukankan      html  css  js  c++  java
  • vim正则表达式

    vim doc: usr_27.txt 查找命令及模式

    一、使用正则表达式的命令[/,?, s, g]

    实践用法:
    1, 模式块作为替换的内容
    1~多个#序列后面加上空格
    :%s/(#+)/1 /g

    1. 搜索命令

    使用正则表达式的命令最常见的就是/, ?(搜索)命令。其格式如下:

    / 正则表达式, 向下搜索
    ?正则表达式,向上搜索
    如:
    /dd:dd:dd " 查找如 17:37:01 格式的时间字符串

    2. 替换命令s

    命令的完整形式: [range]s/from/to/[flags]
    把from指定的字符串替换成to指定的字符串,from可以是正则表达式。

    [range]的取值列表:

    符号 说明
    不写range 默认为光标所在的行。
    % 所有行(与 1,$ 等价)
    . 光标所在的行。
    1 第一行。
    $ 最后一行。
    33 第33行。
    'a 标记a所在的行(之前要使用ma做过标记)。
    .+1 当前光标所在行的下面一行。
    $-1 倒数第二行。(这里说明我们可以对某一行加减某个数值来取得相对的行)。
    22,33 第22~33行。
    .,$ 当前行 到 最后一行。
    'a,'b 标记a所在的行 到 标记b所在的行。
        注意,上面的所有用于range的表示方法都可以通过 +、- 操作来设置相对偏移量。
    

    [flags]
    这里可用的flags有:

    符号 说明
    只对指定范围内的第一个匹配项进行替换。
    g 对指定范围内的所有匹配项进行替换。
    c 在替换前请求用户确认。
    e 忽略执行过程中的错误。
    查看匹配yes单词的数量:

    :%s/yes//gn
    注意:上面的所有flags都可以组合起来使用,比如 gc 表示对指定范围内的
    所有匹配项进行替换,并且在每一次替换之前都会请用户确认。

    例如对全文替换,且替换前请求确认
    :%s/from/to/gc
    将所有的four替换成4,但是fourteen中的four不替换
    :s/<four>/4/g
    :%s/ */ /g 把一个或者多个空格替换为一个空格。
    :%s/ *$// 去掉行尾的所有空格。
    :%s/^/ / 在每一行头上加入一个空格。

    3. global 命令形式

    global命令格式 : [range]global/{pattern}/{command}
    global命令在[range]指定的文本范围内(缺省为整个文件)查找{pattern}可以是正则表达式,
    然后对匹配到的行执行命令{command},如果希望对没匹配上的行执行命令,则使用global!或vglobal命令。

    一些例子:

    1) 删除包含某字段(例如aaa)的行

    :g/aaa/d

    2) 删除不包含某字段(例如aaa)的行

    :g!/aaa/d

    3) 删除指定的行

    :x,.d #从x行删除到当前行;
    :.,xd #从当前行删除到x行;

    4) 删除只有空白的行

    :g/^s*$/d

    二、正则表达式的用法

    表示位置的符号

    元字符 说明
    $ 匹配行尾
    ^ 匹配行首
    < 匹配单词词首
    > 匹配单词词尾

    表示数量的元字符

    元字符 说明
    • | 匹配0到任意个
      + | 匹配1到任意个
      ? | 匹配0或1个
      {n,m} | 匹配n-m个
      {n} | 匹配n个
      {n,} | 匹配n-任意个
      {,m} | 匹配0-m个

    元字符一览

    元字符 说明
    . 匹配任意一个字符
    [abc] 匹配方括号中的任意一个字符。可以使用-表示字符范围,
    [a-z0-9] 匹 配小写字母和阿拉伯数字。
    [^abc] 在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。
    d 匹配阿拉伯数字,等同于[0-9]。
    D 匹配阿拉伯数字之外的任意字符,等同于[^0-9]。
    x 匹配十六进制数字,等同于[0-9A-Fa-f]。
    X 匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]。
    w 匹配单词字母,等同于[0-9A-Za-z_]。
    W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]。
    匹配字符。
    s 匹配空白字符,等同于[ ],或[ ]。
    S 匹配非空白字符,等同于[^ ]。
    另外,如果要查找字符 *、.、/等,它们不在方括号之内时,则需要在前面用 符号,表示这不是元字符,而只是普通字符而已。
    元字符 说明
    * 匹配 * 字符。
    . 匹配 . 字符。
    / 匹配 / 字符。
    匹配 字符。
    [ 匹配 [ 字符。

    方括号内的特殊字符

    键盘上的特殊字符放到方括号中基本都能直接匹配
    [!@#$%^&*()_+-=[]{}|:";'<>?,./~]

    例外的情况需要加的有 -,.
    中划线如果与数字,字母,空格相邻时,又希望它匹配文中的-,就加转意字符
    有些情况反斜杠也要加,为了通用性考虑,如果为了匹配 - 就使用 [ - \]

    方括号的用法:

    方括号后加* 或+ 匹配任意多个 或 1个以上括号内的任意字符
    例如 [a-zA-Z0-9]* 匹配任意多个字母数字组成的字符串。

    ref
    https://www.cnblogs.com/PegasusWang/p/3153300.html

  • 相关阅读:
    localStorage存储数组以及取数组方法
    jq选择CheckBox进行排序
    js定时函数,定时改变字体的大小
    JQuery Datatable用法
    WebSocket实战
    代码段
    黎活明给程序员的忠告 收藏
    雅砻江后勤项目经验总结
    Java泛型方法
    回忆,梦的开始
  • 原文地址:https://www.cnblogs.com/ims-/p/9967011.html
Copyright © 2011-2022 走看看