(正则表达式) 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)
替换
,
DXF 文件正常
奇数行 abc...
(AWK)
NR%2!=0{L1=[=10=]}
NR%2==0{print L1 "," [=10=];L1=""}
提前谢谢你,抱歉英语不好!
我要
'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)
替换
,
DXF 文件正常
奇数行 abc...
(AWK)
NR%2!=0{L1=[=10=]}
NR%2==0{print L1 "," [=10=];L1=""}