首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引号外的换行符上的正则表达式拆分

问引号外的换行符上的正则表达式拆分
EN

Stack Overflow用户
提问于 2020-07-14 23:30:15
回答 1查看 401关注 0票数 0

我想在不在双引号内的新行上拆分数据流。该流包含多行数据,其中每一行由换行符分隔。但是,数据行可能包含双引号内的换行符。这些换行符并不表示下一行数据已经开始,所以我想忽略它们。

因此,数据可能如下所示:

第一行: bla bla,12345,...

第2行:"bla

bla",12345,...

第三行: bla bla,12345,...

我尝试在类似的文章中使用正则表达式,通过将逗号替换为换行符来拆分未用双引号找到的逗号(Splitting on comma outside quotes):

代码语言:javascript
复制
\n(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)

这个正则表达式与我预期的不匹配。我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-07-15 01:36:26

匹配不在双引号之间的行终止符等效于匹配从字符串开头开始的偶数个双引号前面的行终止符。您可以将这样的行终止符与以下正则表达式相匹配(未设置多行标志,以便^匹配字符串的开头,而不是行的开头)。

代码语言:javascript
复制
/(?<=^[^"]*(?:"[^"]*"[^"]*)*)\r?\n/

Start your engine!

Javascript的regex引擎(令人印象深刻地支持可变长度lookbehinds)执行以下操作。

代码语言:javascript
复制
(?<=         : begin positive lookbehind
  ^          : match beginning of string (not line)
  [^"]*      : match 0+ chars other than '"'
  (?:        : begin non-capture group
    "[^"]*"  : match '"', 0+ chars other than '"', '"'
    [^"]*    : match 0+ chars other than '"' 
  )*         : end non-capture group and execute 0+ times
)            : end postive lookbehind
\r?\n        : match line terminator
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62898644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档