gpt4 book ai didi

python - 用于 CSV 拆分的正则表达式,包括多个双引号

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:18 25 4
gpt4 key购买 nike

我有一个包含文本的 CSV 列数据。每行用双引号分隔 "

一行中的示例文本与此类似(注意:换行和每行前的空格是有意的)

"Lorem ipsum dolor sit amet, 
consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna
aliqua. Ut ""enim ad"" minim veniam,
quis nostrud exercitation ullamco laboris nisi
ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat ""nulla pariatu"""
"ex ea commodo
consequat. Duis aute irure ""dolor in"" reprehenderit
in voluptate velit esse
cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt
mollit anim id est laborum."

上面代表 2 个后续行。

我想选择每个第一个双引号 "(开始一行)和每个最后一个双引号 "

之间包含的所有文本作为单独的组

如您所见,文本中有换行符,以及随后的转义双引号 "",这是我需要选择的文本的一部分。

我想到了这样的东西

(?s)(?!")[^\s](.+?)(?=")

但是多个双引号打破了我想要的匹配

我是正则表达式的真正新手,所以我想我可能遗漏了一些非常基本的东西。不知道是否相关,但我使用的是 Sublime Text 3,所以我认为应该是 python。

我该怎么做才能达到我的需要?

最佳答案

您可以使用以下正则表达式:

"[^"]*(?:""[^"]*)*"

参见 demo

此正则表达式将匹配一个非引号或双引号内的 2 个后续双引号。

它是如何工作的?让我分享来自 debuggex.com 的图形:

enter image description here

使用正则表达式,我们匹配:

  • " - (1) - 文字引用
  • [^"]* - (2, 3) - 引号以外的 0 个或多个字符(是的,包括换行符,这是一个 negated character class ),如果没有,然后正则表达式搜索最终的文字引用 (6)
  • (?:""[^"]*)* - (4,5) - 0 个或多个序列:
    • "" - (4) - 双双引号
    • [^"]* - (5) - 0 个或多个引号以外的字符
  • " - (6) - 最后的文字引用。

这比 "(?:[^"]|"")*" 工作得更快(尽管产生相同的结果),因为前者的处理是线性的,涉及的回溯要少得多。

关于python - 用于 CSV 拆分的正则表达式,包括多个双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32305144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com