我有一个CSV文本文件,如下所示:
"1",
"2",
"3",
Some Text
"4",
"5",
我要做的是组合不以引号开头的行。这就是我想要实现的目标:
"1",
"2",
"3", Some Text
"4",
"5",
我可以通过以下方式成功找到结果:
^[^"]
但这是问题所在。结果是字母“S”突出显示,我想保留该字母并将其移动到下一行。我知道在正则表达式搜索和替换之后我将不得不使用扩展模式。
需要注意的一点是,上面列出了许多字段。 It also could be possible that there is no carriage return before "Some Text" appears
。还有更多的领域,但为了简单起见我缩短了这一点。
有什么想法吗?
答案 0 :(得分:1)
使用此替换:
\r?\n([^"])
或(因为\R
是Notepad ++中的任何换行符)
\R([^"])
使用
$1
\r?\n
与换行符匹配,而([^"])
会在不是双引号的行的开头捕获符号。我们稍后通过使用反向引用$1
获取捕获的文本来恢复它。
设定:
答案 1 :(得分:-1)
这实际上有点棘手。
查找:(?:,[^\S\r\n]*)?\r?\n\s*([^"\s])
替换:, $1
不需要特殊标志。
以下是它的工作原理:
(?: , [^\S\r\n]* )? # Previous line ending: Optional comma plus horizontal whitespaces
\r? \n # Anchor, Required single line break
\s* # Many optional whitespaces (including line breaks)
( [^"\s] ) # (1), A single non-quote / non-whitespace