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

求一个能够互换两段文本的正则表达式

  •  
  •   feilong · 2018-08-28 15:07:02 +08:00 · 1513 次点击
    这是一个创建于 2281 天前的主题,其中的信息可能已经有所发展或是发生改变。

    求一段正则表达式,能够互换两段文本,不知道能否实现

    例如

    aaa bbb  
    ccc ddd  
    aaa eee  
    ccc fff  
    

    替换为

    ccc bbb  
    aaa ddd  
    ccc eee  
    aaa fff  
    

    大概是在这个意思

    8 条回复    2018-08-28 17:05:17 +08:00
    feilong
        1
    feilong  
    OP
       2018-08-28 15:09:26 +08:00
    补充一下,不要先把 aaa 替换成别的再替换回来这种
    F0nebula
        2
    F0nebula  
       2018-08-28 15:53:41 +08:00
    s/(\w+) (\w+)/\2 \1/g
    imn1
        3
    imn1  
       2018-08-28 15:56:41 +08:00
    @F0nebula
    他的需求,互换字串不是同一行的
    F0nebula
        4
    F0nebula  
       2018-08-28 15:59:28 +08:00
    @imn1 #3 啊抱歉喵 没看清楚
    feilong
        5
    feilong  
    OP
       2018-08-28 16:33:18 +08:00
    @imn1 嗯,字符串不在一行的

    之前是三次替换,先把 aaa 替换成别的,再把 ccc 替换成 aaa,最后再把 aaa 换回来,但是我感觉三次替换有点太蠢了,所以问一问大家这种有没有办法一次替换完成
    ys0290
        6
    ys0290  
       2018-08-28 16:48:31 +08:00 via iPhone
    不暂存数据,就要暂存数据的位置
    feilong
        7
    feilong  
    OP
       2018-08-28 16:57:49 +08:00
    @ys0290 于是说一个正则表达式可以实现么?我知道一般的话可以像 @F0nebula 那样,但是这种情况如何解决?
    HiHi
        8
    HiHi  
       2018-08-28 17:05:17 +08:00 via iPhone
    感觉一个正则不行,vim 上 我是用插件解决此类需求了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3126 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:59 · PVG 21:59 · LAX 05:59 · JFK 08:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.