(正则表达式) 2Liner→1Liner

(Regular Expressions) 2Liner→1Liner

提前谢谢你,抱歉英语不好!

我要

'Odd rows' 'CRLF' 'Even rows' CRLF' → 'Odd rows' ',' 'Even rows' 'CRLF'

示例输入:

  0
SECTION
  2
HEADER

期望的输出:

  0,SECTION
  2,HEADER

我尝试过的:

Find: (.*)\n(.*)\n
Replace: ,\n

我要ーー轻松看dxf

. 匹配一个换行符就像它匹配任何其他字符一样,所以第一个 .* 将吞噬整个字符串并且不留下任何东西。

而是使用排除 \n 的字符组。此外,不清楚您的最后一行是否以 \n 结尾,因此正则表达式应该处理:

查找

([^\n]*)\n([^\n]*)(\n|$)

替换

,

细分:

  • ([^\n]*) - 0 个或多个不是 \n
  • 的字符
  • \n
  • ([^\n]*)
  • (\n|$) - \n 或字符串结尾

您还应该匹配 enter 和 space,因为字符串中可能有多个 space 和新行可用 试试这个正则表达式-

"0\nSECTION\n 2\nHEADER".replace(/([\d]+)([\s\n]+)([^\d\s\n]*)/g,",")

var myStr = `  0
SECTION
  2
HEADER`;

var output = myStr.replace(/([\d]+)([\s\n]+)([^\d\s\n]*)/g,",");
console.log(output);

对于您的示例数据,您可以在捕获组 1 中捕获一个或多个数字,然后匹配换行符。

在替换中使用第 1 组后跟一个逗号。

匹配

(\d+)(?:r?\n|\r)

Regex demo

替换

,

DXF 文件正常

奇数行 abc...

(AWK)

NR%2!=0{L1=[=10=]}
NR%2==0{print L1 "," [=10=];L1=""}