【发布时间】:2019-01-22 20:37:48
【问题描述】:
这样的 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++ 中的正则表达式替换来做到这一点。到目前为止,我发现我可以替换
(;")(([^"])(\r\n)([^"])+)(";)
与
\1\3<BR>\5\6
这在第 2 行中可以正常工作,但在第 3 行和第 4 行中删除了太多内容。如果必须,我可以为它编写一个 Python 脚本,但我希望它在 Notepad++ 中更快。有什么建议么?
【问题讨论】:
-
你确定
{789}后面的换行符一定要匹配吗?";在它使匹配无效之前不应该吗?尝试(?:\G(?!^(?<![\s\S]))|;")(?:(?!;"|";).)*\K\R并替换为<BR>。 -
@WiktorStribiżew 谢谢!您对 {789} 之后的换行符是正确的,您的搜索似乎也有效。我第一次在正则表达式中看到
\G和\K\R。会查查他们。再次感谢!