试图在引号之间替换新行,在一种情况下不起作用

时间:2016-09-30 18:38:57

标签: regex

我有这个表达:

\n(?!")|\r(?!")|\r\n(?!")

导致这种情况无效的第二种情况是什么?我唯一可以弄清楚的是,换行符就在引号字符的前面,但我不确定这是否是问题以及如果是的话如何修复它。

在第一种情况下有效:

"abcdef"
"ghilmn"
"opq
rst"

变为

"abcdef"
"ghilmn"
"opqrst"

在第二种情况下不起作用:

"abcdef"
"ghilmn"
"opq
rst
"

变为

"abcdef"
"ghilmn"
"opqrst
"

2 个答案:

答案 0 :(得分:0)

默认情况下,正则表达式只匹配一次。查看global标志以及如何在您运行此环境的任何环境中应用它 - 通常类似于/expression/g

答案 1 :(得分:0)

您可以使用此正则表达式进行搜索:

\n(?!(?:(?:[^"]*"){2})*[^"]*$)

并使用空字符串作为替换。

这个正则表达式使用负向前瞻来断言我们在换行符之前没有偶数引号。

RegEx Demo