替换仅在;“和”;之间找到的换行

时间:2019-09-04 23:29:36

标签: regex regex-lookarounds

我想将csv文件导入MS Access。 csv文件作为其中包含换行符的字段。 当我尝试导入文件时,换行符将整个混乱。

我想替换字段中的换行符,而不是定界记录的换行符。

csv文件的定界符为“;”。 文本用双引号'“'

如果我使用Notepad ++打开文件,它看起来像这样:

fieldName1; fieldName2; fieldName3; fieldName4 LF DataNumber1;“ DataText2”;“ DataText3”; DataNumber4 LF

“ DataText3”类似于: “姓名:John LF 电子邮件:John@domain.com LF 电话号码:00000000”

如果我可以在“”和“;之间替换 LF 通过诸如“ ###”之类的任何字符集,我将能够导入文件并处理数据。

我试图在\“和”;之间匹配\ n使用

   (?=;\"[^\n]+)\n(?=[^\n]+\";)

2 个答案:

答案 0 :(得分:0)

此正则表达式应完成工作:

("[^"]*?)\n([^"]*?)\n([^"]*?")

替换为:

\1###\2###\3

测试here

如果所有字符串中的LF数均相同,则可以针对特定情况调整模式。

如果字符串中LF的数量可能有所不同,则假定字符串中只有1个LF,然后运行替换操作,直到一切正常为止。

答案 1 :(得分:0)

多亏了virolino,答案是:

(;"[^"]*?)\n([^"]*?";)

替换为

\1###