(Regular Expressions) 2Liner→1Liner

折月煮酒 提交于 2020-01-15 20:11:33

问题


Thank you in advance and sorry for the bad english!

I want

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

Example Input:

  0
SECTION
  2
HEADER

Desired Output:

  0,SECTION
  2,HEADER

What I have tried:

Find: (.*)\n(.*)\n
Replace: $1,$2\n

I want ー Easy to see dxf


回答1:


For you example data you could capture one or more digits in capturing group 1 followed by matching a newline.

In the replacement use group 1 followed by a comma.

Match

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

Regex demo

Replace

$1,




回答2:


. matches a newline the same as it matches any other characer, so the first .* is going to gobble up the whole string and leave nothing left.

Instead, use a character group that excludes \n. Also, it's not clear whether your final line terminates with a \n or not, so the Regex should handle for that:

Find

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

Replace

$1,$2$3

Breakdown:

  • ([^\n]*) - 0 or more characters that are not \n
  • \n
  • ([^\n]*)
  • (\n|$) - \n or end of string



回答3:


you should match enter and space also, because there may be multiple spaces and new line available in string try this regex-

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

var myStr = `  0
SECTION
  2
HEADER`;

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



回答4:


DXF file ok

ODD line abc...

(AWK)

NR%2!=0{L1=$0}
NR%2==0{print L1 "," $0;L1=""}


来源:https://stackoverflow.com/questions/52541076/regular-expressions-2liner%e2%86%921liner

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!