Regex 尝试替换引号之间的新行在一种情况下不起作用

Regex 尝试替换引号之间的新行在一种情况下不起作用,regex,Regex,我有这样的表达: \n(?!")|\r(?!")|\r\n(?!") 第二种情况是什么导致这种情况不起作用的?我唯一能弄清楚的是换行符就在引号字符的前面,但我不确定这是否是问题所在,如果是,如何解决它 在第一种情况下有效: "abcdef" "ghilmn" "opq rst" "abcdef" "ghilmn" "opq rst " 变成 "abcdef" "ghilmn" "opqrst" "abcdef" "ghilmn" "opqrst " 它在第二种情况下不起作用: "abc

我有这样的表达:

\n(?!")|\r(?!")|\r\n(?!")
第二种情况是什么导致这种情况不起作用的?我唯一能弄清楚的是换行符就在引号字符的前面,但我不确定这是否是问题所在,如果是,如何解决它

在第一种情况下有效:

"abcdef"
"ghilmn"
"opq
rst"
"abcdef"
"ghilmn"
"opq
rst
"
变成

"abcdef"
"ghilmn"
"opqrst"
"abcdef"
"ghilmn"
"opqrst
"
它在第二种情况下不起作用:

"abcdef"
"ghilmn"
"opq
rst"
"abcdef"
"ghilmn"
"opq
rst
"
变成

"abcdef"
"ghilmn"
"opqrst"
"abcdef"
"ghilmn"
"opqrst
"

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

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

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

\n(?!(?:(?:[^"]*"){2})*[^"]*$)
并使用空字符串作为替换

这个正则表达式使用一个负的前瞻来断言在换行符前面没有偶数个引号


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

\n(?!(?:(?:[^"]*"){2})*[^"]*$)
并使用空字符串作为替换

这个正则表达式使用一个负的前瞻来断言在换行符前面没有偶数个引号


你的正则表达式是什么风格的?我在记事本++中使用这个正则表达式,所以我认为答案是通用文本编辑器风格。对于变得复杂的事情,我使用sed和awk,因此保持文本编辑器功能对我来说应该是可行的。你的正则表达式风格是什么?我在记事本++中使用这个正则表达式,所以我认为答案是通用文本编辑器风格。对于变得复杂的事情,我正在使用sed和awk,因此保持文本编辑器功能对我来说应该是可行的。这很有趣,也很有意义,但我在记事本++中运行这个程序,我似乎找不到关于该程序中全局标志的文档,这很有趣,也很有意义,但是我在notepad++中运行它,我似乎找不到关于该程序中全局标志的文档。这做了我在notepad++中需要它做的事情,但我需要反复运行它。我不知道如何让它在cygwin工作。但它让我到达了我需要去的地方,所以这太棒了!很高兴知道它成功了,这正是我在notepad++中需要它做的,但我需要反复运行它。我不知道如何让它在cygwin工作。但它让我到达了我需要去的地方,所以这太棒了!很高兴知道它成功了,