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

字符串排序问题

  •  
  •   artandlol · 2017-05-15 21:09:21 +08:00 · 1185 次点击
    这是一个创建于 2783 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如何对以下字符串排序。

    11  uid=984  op=85     get=25 
    11  uid=544  get=26    op=85
    12  op=55    uid=49    get=18
    12  uid=002  get=20    op=99
    12  op=34    get=678   uid=002
    

    排成第一列不变,get 的值为第二列,uid 的值为第三列

    3 条回复    2017-05-15 21:53:23 +08:00
    geelaw
        1
    geelaw  
       2017-05-15 21:32:08 +08:00
    一次性处理的话,用

    $1 get=$5$9$13 uid=$3$7$11 op=$4$8$12

    替换

    ^\s*(\d+)\s+(uid=(\d+)|op=(\d+)|get=(\d+))\s+(uid=(\d+)|op=(\d+)|get=(\d+))\s+(uid=(\d+)|op=(\d+)|get=(\d+))\s*$

    ($ 是匿名捕获组,^$ 是行开头结尾而不是列开头结尾)

    如果你的正则表达式引擎不支持大于 9 的匿名捕获组,使用不捕获组(这样恰好 9 个)或者使用命名捕获组。

    更安全的方式是枚举 3! 种可能的排列写成正则表达式。
    nutting
        2
    nutting  
       2017-05-15 21:32:37 +08:00 via Android
    把值抽出来放数据库两列?
    artandlol
        3
    artandlol  
    OP
       2017-05-15 21:53:23 +08:00
    @geelaw 谢谢
    刚用 awk 解决了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2501 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:04 · PVG 19:04 · LAX 03:04 · JFK 06:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.