V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
AntiGameZ
V2EX  ›  问与答

一个正则表达式的问题

  •  
  •   AntiGameZ · 2010-08-04 20:53:16 +08:00 · 4259 次点击
    这是一个创建于 5228 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一个问题,怎么也想不明白:

    文本是这样的:

    Name: Jim
    Position: VP

    Name: Tom
    Position: PM

    Name: Jim
    Position: VP

    Name: Jerry
    Position: CTO

    Name: Jim
    Position: VP

    我想找寻Name为Jim的人,并将下一行的Position改为CEO,即将所有的

    Name: Jim
    Position: VP

    改为
    Name: Jim
    Position: CEO

    如果只用正则表达式(只用正则表达式,不借助如Python,Java等程序语言的帮助)有没有可能实现我需要的这个替换呢?谢谢
    8 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
       2010-08-04 20:56:57 +08:00
    这个貌似不用正则,普通的查找替换就可以完成了啊?
    AntiGameZ
        2
    AntiGameZ  
    OP
       2010-08-04 21:00:22 +08:00
    是的,其实这个问题是别人问我的,我图省事就直接用查找替换的方式做好给别人了。现在想想很纠结,感觉只用正则是可以做的,但是在RegexBuddy里折腾了1个多小时,愣是没有搞出来。
    Livid
        3
    Livid  
    MOD
       2010-08-04 21:03:20 +08:00
    放弃吧,正则不是用来解决这种简单小问题的。

    试试看用正则去分析 web server log,那样的复杂场合才是正则的用武之地。
    AntiGameZ
        4
    AntiGameZ  
    OP
       2010-08-04 21:05:57 +08:00
    我写的例子可能有些简化过头了。真实处理的问题是一个有关工作流流转的东东

    呵呵

    PS:问下livid你的Macbook Pro什么型号/配置,谢谢
    Livid
        5
    Livid  
    MOD
       2010-08-04 21:08:23 +08:00
    MB166,两年的老机器了。

    http://bebefore.com/apple-macbook-pro-mb166/

    Unibody 面世之前的最后一代。
    bighearted
        6
    bighearted  
       2010-08-04 21:19:35 +08:00
    举的例子是完全匹配,涉及不到正则啊
    Livid
        7
    Livid  
    MOD
       2010-08-04 21:25:44 +08:00
    恩,用常量去取代常量,是不需要正则的。

    正则的用途是用常量去取代变量,或是把变量变换位置。每次正则运行的时候,有可能替换操作完全不执行,因为输入的内容是不确定的。
    rex
        8
    rex  
       2010-09-09 13:11:44 +08:00
    莫非是这样?
    http://img.ly/22RY
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 287ms · UTC 09:50 · PVG 17:50 · LAX 01:50 · JFK 04:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.