feilong
V2EX  ›  问与答

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

  •  
  •   feilong · Aug 28, 2018 · 1929 views
    This topic created in 2839 days ago, the information mentioned may be changed or developed.

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

    例如

    aaa bbb  
    ccc ddd  
    aaa eee  
    ccc fff  
    

    替换为

    ccc bbb  
    aaa ddd  
    ccc eee  
    aaa fff  
    

    大概是在这个意思

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

    之前是三次替换,先把 aaa 替换成别的,再把 ccc 替换成 aaa,最后再把 aaa 换回来,但是我感觉三次替换有点太蠢了,所以问一问大家这种有没有办法一次替换完成
    ys0290
        6
    ys0290  
       Aug 28, 2018 via iPhone
    不暂存数据,就要暂存数据的位置
    feilong
        7
    feilong  
    OP
       Aug 28, 2018
    @ys0290 于是说一个正则表达式可以实现么?我知道一般的话可以像 @F0nebula 那样,但是这种情况如何解决?
    HiHi
        8
    HiHi  
       Aug 28, 2018 via iPhone
    感觉一个正则不行,vim 上 我是用插件解决此类需求了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3002 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 08:33 · PVG 16:33 · LAX 01:33 · JFK 04:33
    ♥ Do have faith in what you're doing.