代码之家  ›  专栏  ›  技术社区  ›  Pubg Mobile

使用Notepad++正则表达式标记特定分隔符前的最后一个逗号分隔值

  •  0
  • Pubg Mobile  · 技术社区  · 2 月前

    我有一个文本数据列表,格式如下:

    Drtyjtyjnt
    11,825,222
    Ftyryer
    8,823,623
    Strtrtuperd
    8,542,448
    Ts
    7,153,156
    Supd
    7,122,304
    Su.3
    6,920,743
    Supld
    dddd
    tgtgtg
    Sd
    April 1991
    /////////////////////////
    Freeeer
    7,537,583
    Dufdgnt
    4,381,322
    SioBup
    3,010,937
    S
    2,238,608
    Du
    SuperM
    Sup
    August 1989
    /////////////////////////
    D
    12,184,781
    S
    9,023,965
    Fog
    8,913,781
    Supe
    7,441,191
    May 1991
    /////////////////////////
    

    我想添加书签 最后一个逗号分隔的值 之前每 ///////////////////////// 使用Notepad++正则表达式分隔。例如,在提供的列表中,应将以下行添加书签:

    6,920,743
    2,238,608
    7,441,191
    

    我尝试使用以下正则表达式模式,但它们不起作用:

    (?-s)(\d{1,3}(?:,\d{3})+)(?=(?:(?!\R/////////////////////////).)*\R/////////////////////////)
    (?s)(\d{1,3}(?:,\d{3})+)(?=(?:\R(?!/////////////////////////).)*\R/////////////////////////)
    

    有人能帮助识别这些正则表达式模式可能存在的问题,或者提供一个可行的解决方案吗?

    1 回复  |  直到 2 月前
        1
  •  1
  •   Wiktor Stribiżew    2 月前

    您可以使用

    ^\d+(?:,\d+)*$(?=(?:\R(?!\d+(?:,\d+)*$).*)*\R/{3,}$)
    

    请参阅 regex demo

    细节

    • ^ -线的起点
    • \d+(?:,\d+)* -两个或多个逗号分隔的数字序列
    • $ -行尾
    • (?=(?:\R(?!\d+(?:,\d+)*$).*)*\R/{3,}$) -一个积极的前瞻,需要(立即在当前位置的右侧):
      • (?:\R(?!\d+(?:,\d+)*$).*)* -零次或多次发生
        • \R(?!\d+(?:,\d+)*$) -换行符后面没有仅包含逗号分隔数字序列的行
        • .* -线的其余部分
      • \R -断线
      • /{3,} -三个或更多 / 字符
      • $ -行尾

    核电厂试验:

    enter image description here