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

How to turn these text lines into CSV lines with regex (PCRE)?

给定以下输入

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

您可以使用正则表达式进行匹配:

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

Updated RegEx Demo

正则表达式分解:

  • ^: 开始
  • (\d+): 匹配捕获组 #1 中的 1+ 个数字
  • \h+: 匹配 1+ 个水平空格
  • ([a-z]+): 在捕获组#2
  • 中匹配 1+ 个小写字母
  • \h+: 匹配 1+ 个水平空格
  • (\d+): 匹配捕获的组 #3 中的 1+ 个数字
  • (?:\R\S*$)*:匹配零个或多个垃圾字符,这意味着单独一行中的非空白字符