代码之家  ›  专栏  ›  技术社区  ›  Stephan

如何使用正则表达式(PCRE)将这些文本行转换为CSV行?

  •  0
  • Stephan  · 技术社区  · 7 年前

    给定以下输入

    1 foo 745
    2 baz 746
    unneeded characters
    

    我期望输出如下

    1;foo;745
    2;baz;746
    

    正则表达式: /(\d)\s([a-z]+)\s(\d+)\s+|[\S\s]+$/x

    Demo

    1 回复  |  直到 7 年前
        1
  •  0
  •   anubhava    7 年前

    ^(\d+)\h+([a-z]+)\h+(\d+)(?:\R\S*$)*
    

    Updated RegEx Demo

    正则表达式分解:

    • ^ :开始
    • (\d+)
    • \h+
    • ([a-z]+) :匹配捕获组#2中的1+小写字母
    • \h+ :匹配1+水平空白
    • :匹配捕获组#3中的1+个数字
    • (?:\R\S*$)* :匹配零或更多