首页 > 后端开发 > C++ > C# 正则表达式如何使用引号内的逗号分割字符串?

C# 正则表达式如何使用引号内的逗号分割字符串?

Mary-Kate Olsen
发布: 2025-01-07 21:10:45
原创
183 人浏览过

How Can C# Regex Split Strings with Commas Inside Quotes?

C# 正则表达式字符串分割:引号外的逗号

使用传统的基于逗号的分割方法处理包含嵌入逗号的字符串可能具有挑战性。本文演示了一种使用 C# 和正则表达式分割包含可能被引号包围的逗号的字符串的解决方案。

问题陈述:

考虑以下表示 SQL 代码片段的字符串:

<code>('ABCDEFG', 123542, 'XYZ 99,9')</code>
登录后复制

目标是将此字符串分割成三个不同的部分:

  1. 'ABCDEFG'
  2. 123542
  3. 'XYZ 99,9'

由于第三个参数 ("XYZ 99,9") 中的逗号不应被视为分隔符,因此出现了挑战。

正则表达式解决方案:

为了解决这个问题,我们可以使用一个正则表达式,该表达式仅在前面有偶数个单引号时才匹配逗号。此模式确保引号内的逗号不会被分割。

<code>",(?=(?:[^']*'[^']*')*[^']*$)"</code>
登录后复制

用法:

<code class="language-csharp">var result = Regex.Split(sampleString, ",(?=(?:[^']*'[^']*')*[^']*$)");</code>
登录后复制

解释:

  • "," 匹配字符串中的任何逗号。
  • (?=( 开始一个先行断言。
  • (?:[^']'[^']')* 匹配任意数量的非单引号字符序列,后跟一个单引号字符。
  • [^']* 匹配任意数量的非单引号字符。
  • $ 匹配字符串的结尾。

输出:

result 数组的输出如下:

<code>{"'ABCDEFG'", "123542", "'XYZ 99,9'"}</code>
登录后复制

这演示了根据引号外的逗号成功分割字符串,同时保持引号参数不变。

以上是C# 正则表达式如何使用引号内的逗号分割字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

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