如何使用正则表达式 (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
您可以使用正则表达式进行匹配:
^(\d+)\h+([a-z]+)\h+(\d+)(?:\R\S*$)*
正则表达式分解:
^
: 开始
(\d+)
: 匹配捕获组 #1 中的 1+ 个数字
\h+
: 匹配 1+ 个水平空格
([a-z]+)
: 在捕获组#2 中匹配 1+ 个小写字母
\h+
: 匹配 1+ 个水平空格
(\d+)
: 匹配捕获的组 #3 中的 1+ 个数字
(?:\R\S*$)*
:匹配零个或多个垃圾字符,这意味着单独一行中的非空白字符
给定以下输入
1 foo 745
2 baz 746
unneeded characters
我希望输出如下
1;foo;745
2;baz;746
我使用正则表达式来获得所需的输出。但是,我无法摆脱垃圾字符。
正则表达式:/(\d)\s([a-z]+)\s(\d+)\s+|[\S\s]+$/x
您可以使用正则表达式进行匹配:
^(\d+)\h+([a-z]+)\h+(\d+)(?:\R\S*$)*
正则表达式分解:
^
: 开始(\d+)
: 匹配捕获组 #1 中的 1+ 个数字\h+
: 匹配 1+ 个水平空格([a-z]+)
: 在捕获组#2 中匹配 1+ 个小写字母
\h+
: 匹配 1+ 个水平空格(\d+)
: 匹配捕获的组 #3 中的 1+ 个数字(?:\R\S*$)*
:匹配零个或多个垃圾字符,这意味着单独一行中的非空白字符