当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

vi 中的正则表达式 (Regular Expression)

    .1. 定义和例子
    ============
      正则表达式只是一个字符模板,用来在搜索中匹配相同的字符.
    在大多数的程序中,正则表达式是括在正斜杠中间的.
    例如, /love/就是一个以正斜杠为分隔符的正则表达式,其中的
    模板love 将用在搜索所有行中与它匹配的字符. 更为有趣的是
    正则表达式可以被特殊的元字符控制.让我们通过下面的例子来进
    一步了解这个概念.
      有文本如下:
      Hi tom,
      I think I failed my anatomy test yesterday. I
      had a terrible stomach ache. I ate too many
      fried green tomatoes.
      Anyway, Tom, Ineed your help. I'd like to make
      the test up tomorrow, but don't know where to
      begin studying. Do you think you could help me?
      After work, about 7 PM, come to my place and I'll
      treat you to pizza in return for your help.
      Thanks.
                Your pal,
                guy@phantom

      假设你发觉Tom 并没有参加考试,而是David 参加的考试.同时还
    发现, 在贺信中Tom的T用的是小写.于是你决定做一个全文替换,把tom
    替换为Tom.

    在vi命令行模式下输入:
    :1, $s/tom/David/g
     ^   ^  ^    ^   ^
                 ---- global 对全文有效

            --------- 将tom 替换为 David , 使用正则表达式.
        ------- 替换单词
     ------ 从文件的第一行到文件的最后一行.

     替换后的文本如下:
     Hi David,
     I think I failed my anaDavidy test yesterday, I
     had terible sDavidach ache. I ate too many
     fried green Davidatoes.
     Anyway, David, I need your help. I'd like to make
     the test up Davidorrow, but don't know where to
     begin studying. Do you think you could help me?
     After work, about ? PM, come to my place and
     I'll treat you to pizza in return for your help.
     Thanks.
                     Your pal,
                     guy@phanDavid

     我们发现有些单词中含有tom的的也被替换了.
     这是因为我们没有使用正则表达式的元字符来界定一个模板从而控制
     字符的替换动作.
     使用:
     :1, $s/\<[Tt]om\>/David/g
     就可以得到我们想要的结果了,即只替换单词tom而不是含有tom字符的
     单词.

    2. 正则表达式的元字符
    ==================
      正则表达式的元字符是一些特殊的字符,它们允许你以某种方式界定一个
    模板来控制什么样的替换将发生.有的元字符锚定一个单词在行首或者行尾.
    有的元字符允许你指定一个字符范围或者一些字符, 来找到大写字母, 小写字母
    数字或者非数字等.

 

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接