artandlol
V2EX  ›  问与答

字符串排序问题

  •  
  •   artandlol · May 15, 2017 · 1576 views
    This topic created in 3378 days ago, the information mentioned may be changed or developed.

    如何对以下字符串排序。

    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 replies    2017-05-15 21:53:23 +08:00
    geelaw
        1
    geelaw  
       May 15, 2017
    一次性处理的话,用

    $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  
       May 15, 2017 via Android
    把值抽出来放数据库两列?
    artandlol
        3
    artandlol  
    OP
       May 15, 2017
    @geelaw 谢谢
    刚用 awk 解决了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   932 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:24 · PVG 06:24 · LAX 15:24 · JFK 18:24
    ♥ Do have faith in what you're doing.