Regex 更换仅在之间找到的线路馈线&引用;及;;

Regex 更换仅在之间找到的线路馈线&引用;及;;,regex,regex-lookarounds,Regex,Regex Lookarounds,我想将csv文件导入MS Access。 csv文件作为包含换行符的字段。 当我尝试导入文件时,换行符会把一切都弄糟 我想替换字段中的换行符,但不替换分隔记录的换行符 csv文件的分隔符为“;”。 文本用双引号括起来 如果我用记事本++打开文件,它看起来像这样: fieldName1;fieldName2;fieldName3;fieldName4LF DataNumber1;“DataText2”、“DataText3”DataNumber4LF 等 “DataText3”类似于: “姓名:J

我想将csv文件导入MS Access。 csv文件作为包含换行符的字段。 当我尝试导入文件时,换行符会把一切都弄糟

我想替换字段中的换行符,但不替换分隔记录的换行符

csv文件的分隔符为“;”。 文本用双引号括起来

如果我用记事本++打开文件,它看起来像这样:

fieldName1;fieldName2;fieldName3;fieldName4LF DataNumber1;“DataText2”、“DataText3”DataNumber4LF

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

如果我可以用任何字符集(如“#####”)替换LFbetween;”和“,我将能够导入文件并处理数据

我试图使用“和”匹配\n


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

("[^"]*?)\n([^"]*?)\n([^"]*?")
替换为:

\1###\2###\3
测试

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


如果字符串中的LF数量可能不同,则假设字符串中只有1个LF,并运行替换,直到一切正常。

多亏了virolino,答案是:

(;"[^"]*?)\n([^"]*?";)
取而代之

\1###

因此,您希望将datatext3替换为名称:JohnLFEmail?或者datatext3是“名称:JohnLFEmail”?“datatext3”是“名称:JohnLFEmail:John@domain.comLFPhoneNumber:00000000“字符串中的LF数可能不同。我尝试了以下方法(;“[^”]*?)\n([^”]*?”;)替换为这个\1######它工作正常,我只需要运行一次替换。它很漂亮!非常感谢!
\1###