使用Notepad ++ regex组合不以引号开头的行

时间:2015-07-13 19:43:49

标签: regex notepad++

我有一个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。还有更多的领域,但为了简单起见我缩短了这一点。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用此替换:

\r?\n([^"])

或(因为\R是Notepad ++中的任何换行符)

\R([^"])

使用

 $1

\r?\n与换行符匹配,而([^"])会在不是双引号的行的开头捕获符号。我们稍后通过使用反向引用$1获取捕获的文本来恢复它。

设定:

enter image description here

答案 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