修复用于替换所有\ n和\ r内引号的正则表达式

蒂亚戈

这可能很难解释,我会尽力而为。我目前正在使用nodejs中的csv转换流解析器,但是我在替换所有\ n和\ r内含引号的“ \”内挣扎。

目前,我有以下正则表达式:

(^|[;])"(?:""|[^"])*[\n\r]+(?:""|[^"])*"

哪里; 是列定界符。

这是两个示例,第一个示例在执行预期的操作,第二个示例在进行捕获,但不应这样做,因为; 在引号内。

第一次测试(成功)

test;"123";"this description with new line feed  below should be
matched by regex";test;"1.0"
 

第二次测试(错误)

NewLine1;"test - this one should not be captured by the regex but its being captured ";test;1
NewLine2;"test that went wrong"

有没有办法选择引号之间的文本,在第一个引号之前包含分号,在最后一个引号之后包含分号,但忽略引号内的分号?我认为这就是我所需要的,因此第二个示例不考虑正则表达式匹配。

先感谢您。

姆雷扎伊

您可以使用:

(^|;)"(?:""|[^";])*[\n\r]+(?:""|[^";])*"

正则表达式演示

我改为[;];因为它们在您的情况下是等效的。还添加了;字符,[^";]因为您的CSV流列值不能包含此字符。

我不知道您为什么要""在正则表达式中使用,但是如果您考虑在列值中考虑其他双引号,则我认为它们必须被转义\,因此您可以使用正则表达式(^|;)"(?:(?<=\\)"|[^";])*[\n\r]+(?:(?<=\\)"|[^";])*"(?<=\\)"代替,""用正则表达式代替"带反斜杠的字符。\"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用C#和正则表达式删除引号(“)内的所有逗号

正则表达式:替换任何内容和内引号

查找和替换错误引号的正则表达式

正则表达式以捕获引号内的数字和有/无空格

正则表达式匹配双引号和单引号之外的所有逗号

用于拆分字符串的正则表达式,使用空格,除非在引号和括号内

正则表达式,用于捕获和用引号替换字符串

正则表达式-用开始和结束引号替换带引号的字符串

正则表达式用\ r \ n替换所有\ r而不是\ n的实例

R中的正则表达式和价格替换

使用Perl正则表达式删除引号和撇号的所有变体

JS和正则表达式,用于替换double =标记中的所有内容

正则表达式通过忽略“已替换单引号”和“开始/结束单引号”来替换单引号

正则表达式替换大括号和双引号但保留文本

用正则表达式替换引号,逗号和撇号-python / pandas

Python正则表达式:查找和替换引号之间的逗号

用sed命令和正则表达式替换包含引号的值

名称中包含bb引号(用于名称和链接路径)的正则表达式?

正则表达式,用于删除开始和结束引号之间的空格(PHP)

正则表达式用于传递空间和单引号

正则表达式用于可选引号,哈希数组和空字符串

正则表达式(PHP)删除引号(“”和“”)之间的所有水平空白(包括转义引号)

正则表达式,用于匹配和替换“ <”和“>”

R 中的正则表达式用于捕获后续引号内的信息

用于提取双引号和非引号字符串的正则表达式模式Javascript

Notepad ++正则表达式,用于查找和替换

正则表达式,用于查找{}内的所有文本,包括空格和换行符

Python正则表达式,用于查找两个\ n \ n和\ n \ n之间的所有内容

正则表达式,用于捕获和替换字符串中的所有数字(特殊模式除外)