首页 > Java > java教程 > 如何拆分逗号分隔的文本,同时忽略引号内的逗号?

如何拆分逗号分隔的文本,同时忽略引号内的逗号?

Barbara Streisand
发布: 2024-12-02 08:16:10
原创
854 人浏览过

How to Split Comma-Separated Text While Ignoring Commas Within Quotes?

分割不包括引号的逗号分隔文本

处理带有嵌入引号的逗号分隔文本时,有必要忽略引号内的逗号部分。在 Python 中使用默认的 string.split(",") 方法时会出现此问题。

考虑以下字符串:

"123,test,444,\"don't split, this\",more test,1"
登录后复制

使用默认方法拆分此字符串将产生以下结果结果:

["123", "test", "444", "\"don't split", " this\"", "more test", "1"]
登录后复制

如您所见,引用部分内的逗号不会被忽略。为了解决这个问题,需要使用正则表达式。

str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")
登录后复制

正则表达式说明:

  • **,:用逗号分割字符串。
  • **(?=(d $)):先行断言,确保仅当其后跟一个偶数个双引号。
  • *(?:w"w"):捕获多个带引号的字符串。
  • *。 $:捕获剩余的未加引号的文本。

此正则表达式确保只有引用部分之外的逗号才会被识别为分隔符。

或者,在 Python 中使用 (?x) 修饰符可以将正则表达式分解为多行以提高可读性:

str.split("(?x)\n\
        ,          \n\
        (?=\n\
        (?:       \n\
            [^\"]*  \n\
            \"       \n\
            [^\"]*  \n\
            \"       \n\
        )*       \n\
        [^\"]*    \n\
        $        \n\
        )          \n")
登录后复制

此代码有效地将输入字符串拆分为一个列表,其中每个元素代表一个子字符串,在任何引用的部分之外用逗号分隔。

以上是如何拆分逗号分隔的文本,同时忽略引号内的逗号?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板