如何分割逗号分隔的字符串,同时忽略转义逗号?

2024-03-24

我需要编写 StringUtils.commaDelimitedListToStringArray 函数的扩展版本,它获取一个附加参数:转义字符。

所以打电话给我的:

commaDelimitedListToStringArray("test,test\\,test\\,test,test", "\\")

应该返回:

["test", "test,test,test", "test"]



我当前的尝试是使用 String.split() 使用正则表达式分割字符串:

String[] array = str.split("[^\\\\],");

但返回的数组是:

["tes", "test\,test\,tes", "test"]

有任何想法吗?


正则表达式

[^\\],

表示“匹配不是反斜杠后跟逗号的字符” - 这就是为什么诸如此类的模式t,是匹配的,因为t是一个不是反斜杠的字符。

我认为你需要使用某种消极回顾 http://www.regular-expressions.info/lookaround.html,捕获一个,前面没有\不捕获前面的字符,比如

(?<!\\),

(顺便说一句,请注意,我故意没有双重转义反斜杠以使其更具可读性)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何分割逗号分隔的字符串,同时忽略转义逗号? 的相关文章

随机推荐

  • 允许使用 docker-compose 在两个 docker 桥接网络之间进行通信

    我正在使用 docker compose 创建相当复杂的 docker 容器基础设施 这些容器在 4 个不同的网络中运行 类似于我模仿的生产环境 Docker Compose 为我创建了这四个网络 并且一切正常 因为容器不会尝试与不同网络内
  • 数据切换和数据目标在引导程序中不起作用

    我正在使用 bootstrap 开发导航栏 该导航栏上有两个按钮 一个用于登录 另一个用于注册 我希望当用户单击 登录 时 会弹出一个模式弹出窗口 并且当单击 注册 时 用户将被重定向到另一个页面 下面是我的代码 但在我看来它不起作用 我尝
  • 保护 REST API 和 Slim 框架的安全

    我对 REST API 相当陌生 我意识到已经发布了很多问题 然而 仔细阅读这些实际上让我对如何处理这个问题更加困惑 我使用创建了一个 REST API纤薄的框架 http www slimframework com 我只是用它来传输数据
  • Rails 5.x:如何在运行时添加路由而不覆盖原始路由表?

    假设我有一个控制器操作 应该会导致将新路由添加到路由表中 def make route vanity url params vanity url vanity redirect params vanity redirect return r
  • odbc 驱动程序不支持请求的属性

    当我们在最后一行运行程序时 odbc 驱动程序不支持请求的属性 错误出现 任何人都可以给我一个想法 Dim conn As New ADODB Connection Dim rsRec As ADODB Recordset Dim cmd
  • 如何在张量流中使用非常大(>2M)的词嵌入?

    我正在运行一个具有非常大的词嵌入 gt 2M 词 的模型 当我使用 tf embedding lookup 时 它需要一个很大的矩阵 当我运行时 我随后出现了 GPU 内存错误 如果我减小嵌入的大小 一切都会正常 有没有办法处理更大的嵌入
  • 如何在 Matlab 启动时设置一些自定义变量

    我想设置一些初始变量 例如format compact和当前目录 在 Matlab 每次启动时自动执行 我怎样才能做到这一点 创建一个startup m 脚本文件 其中包含用于设置所需状态的命令 接下来 从 MATLAB 内部运行命令 gt
  • 在 BigQuery python api 中设置聚类列

    我正在尝试在 BigQuery 中创建集群表 当我在 UI 中测试它时 它工作得很好 CREATE OR REPLACE TABLE project id xyz temp clustering PARTITION BY date CLUS
  • 使用具有应用程序权限的 Microsoft Graph API 时,租户没有 SPO 许可证

    当我们尝试访问 Microsoft Graph v1 0 API 中的 Sharepoint 终结点时 我们收到 400 错误 并显示消息 租户没有 SPO 许可证 我们已经注册了 Azure AD 应用程序并为相关端点分配了应用程序权限
  • 为什么函数返回 nil FireBase Swift [重复]

    这个问题在这里已经有答案了 为什么函数会返回 nil 我尝试添加 DispathQue 但我不明白它应该如何正确 请帮忙 func storagePutData uid String image UIImage compretition e
  • Spring 中的 Hibernate 事务管理器配置

    在我的项目中 我使用 Hibernate 进行编程事务划分 每次在我的服务方法中我都会写类似的东西 Session session HibernateUtil getSessionFactory openSession session be
  • 这样做的目的是什么(MyJobject as ILocalObject).GetObjectID

    在delphi Tokyo源代码中 我看到这两种不同的方式来检索 服务经理 var FLocationManager JLocationManager FLocationManager TJLocationManager Wrap TAnd
  • express-jwt 不尊重未受保护的路径

    有关express jwt模块的信息可以在这里找到 https github com auth0 express jwt https github com auth0 express jwt https www npmjs com pack
  • 让笑话在故事书中全球可用

    我在用 storybook react 6 in a create react app项目 我对所有商店 对象等进行了数千次测试和模拟 这些模拟利用jest fn 我想在我的故事书故事中重复使用这些模拟 但它说jest is not def
  • neo4j 使用选项卡加载 CSV

    我正在尝试使用以下命令加载 csv 并在 neo4j 2 1 0 中创建节点 使用定期提交 从 file c temp listings TXT 加载 CSV AS 行 FIELDTERMINATOR t CREATE p person i
  • mmap 与 fileinput 的优点

    我读到 mmap 比 fileinput 有优势 因为它会将页面读入内核页面缓存并在用户地址空间中共享该页面 而 fileinput 实际上将一个页面带入内核并将一行复制到用户地址空间 因此 文件输入会产生额外的空间开销 所以 我打算转向
  • 如何在 PostgreSQL 的函数内编写WITH(CTE)

    我正在尝试使用 WITH 它是 PostgreSQL 函数中的公共表表达式 以下是示例 Example Create or replace function withFunction returns void as Body Begin W
  • 变换比例导致间隙/线条

    我目前正在构建一个网站 但遇到了问题transform scale 我有一个按钮 当用户将鼠标悬停在它上面时 会发生两件事 背景沿对角线 扫过 按钮标签颜色改变 按钮稍微变大 我已经完成了这个工作 看起来非常好 但是在实施之后3 当按钮变大
  • dlclose 上不会调用共享库中全局静态变量的析构函数

    在主程序中 我dlopen and dlclose LoadLibrary and FreeLibrary分别 一个共享库 共享库包含一个实例化的静态变量dlopen 并销毁于dlclose 此行为在 MSVC 2008 和 2013 GC
  • 如何分割逗号分隔的字符串,同时忽略转义逗号?

    我需要编写 StringUtils commaDelimitedListToStringArray 函数的扩展版本 它获取一个附加参数 转义字符 所以打电话给我的 commaDelimitedListToStringArray test t