正则表达式替换;“和”;之间的所有换行符

时间:2019-01-22 11:48:23

标签: regex notepad++

这样的csv:

A;B;C
1;"a";foo
2;"a
b";{456}
3;"c
d
e";{789}
4;"d

e
f

g";bar

我需要替换;“和”;之间的所有换行符(CRLF)加上一些标记,例如<BR>。结果应为:

A;B;C
1;"a";foo
2;"a<BR>b";{456}
3;"c<BR>d<BR>e";{789}
4;"d<BR><BR>e<BR>f<BR><BR>g";bar

所有其他换行符应保持不变。我正在尝试使用Notepad ++中的Regex替换来做到这一点。到目前为止,我发现我可以替换

(;")(([^"])(\r\n)([^"])+)(";)

\1\3<BR>\5\6

这在第2行中正常,但在第3和第4行中删除过多。如果需要,我可以为其编写Python脚本,但我希望它在Notepad ++中更快。有什么建议么?

1 个答案:

答案 0 :(得分:1)

您可以使用

查找内容(?:\G(?!^(?<![\s\S]))|;")(?:(?!;"|";).)*\K\R
替换为<BR>

详细信息

  • (?:\G(?!^(?<![\s\S]))|;")-成功匹配之后的位置(\G(?!^(?<![\s\S])),此处\G匹配字符串的开头或上一个匹配的结尾,(?!^(?<![\s\S]))必须减去文档位置匹配的开始)或|子字符串(;"
  • (?:(?!;"|";).)*-除换行符以外的任何字符,最多出现0次以上,且不会启动;"";字符序列
  • \K-匹配重置运算符,该运算符会丢弃到目前为止已匹配的文本
  • \R-换行模式。

enter image description here