当前位置: 首页 > 知识库问答 >
问题:

C# 正则表达式使用分隔符拆分行,但忽略引号内的分隔符

严令秋
2023-03-14

我收到了很多文件,其中我的控制为零,我需要根据分隔符进行拆分。但是当分隔符在引号内时,我不想拆分。因此,列 1、列 2、列 3 是

column1
column2
column3

然而,column1、“column2”、column3是

column1
"column2," column3

这可以使用此正则表达式(在 C# 下)

((?<=\")[^\"]*(?=\"(,|$)+)|(?<=,|^)[^,\"]*(?=,|$))

现在,我的问题是当有一行只有一个双引号(仅打开或关闭)时,例如第1列,第2列",第3列返回

column1

column3

虽然它应该返回

column1
column2"
column3

我发现很多与正则表达式相关的,但在上面的特定示例中,它们都失败了。

共有1个答案

岳鸿畴
2023-03-14

您可以使用匹配您需要的所有字段

Regex.Matches(text, "(?:\"[^\"]*\"|[^,])+|(?<![^,])(?![^,])")

参见正则表达式演示。详细信息:

    < li> (?:\"[^\"]*\"|[^,]) -出现一次或多次 < ul >
  • "[^"]*" -一个< code>",零个或多个除< code>"以外的字符,然后一个< code>"(如果里面可以有< code>"",替换为"[^"]*(?:""[^"]*)*")
  • < li> | - or
  • [^,] -除< code >,
  • 以外任何字符
 类似资料:
  • 问题内容: 我的文字如下: 谁能告诉我我必须使用哪些正则表达式分度数才能获得以下结果: 我在这里阅读Sun教程,直到“ Matcher类的方法”为止,但我仍然茫然。谢谢! 如果是这样,那将很容易,但是不幸的是,事实并非如此。有任何想法吗? 问题答案: 您可以直接使用split()方法,如下所示: (请注意,这将返回长度为5的数组,第一个位置为空字符串) 或者,如果您想使用模式/匹配器,可以这样做:

  • 问题内容: 仅使用正则表达式方法,方法String.replaceAll和ArrayList如何将字符串拆分为标记,但忽略引号内存在的定界符?分隔符是非字母数字或带引号的文本的任何字符 例如:字符串: 你好^世界’这*有两个令牌’ 应该输出: 你好 worldthis *有两个令牌 问题答案: 使用a 来标识要保留的部分,而不是要拆分的部分: 看到它在线上工作:ideone

  • 问题内容: 在我的一个项目中,我不得不处理逗号分隔文件(CSV)。我必须基于逗号来拆分数据,而忽略引号内的逗号(即),因此我使用了另一个堆栈溢出问题(Java:拆分逗号分隔的字符串但忽略了引号中的逗号)中提到的表达式。一切工作都很好,直到最近我才注意到它不适用于下面提到的一种特定情况。 我需要在逗号上拆分的数据字符串为: 以我的理解为基础 拆分后的数据应返回一个大小为10的数组,该数组的后两个索引

  • 使用JavaScript,我试图使用正则表达式将段落拆分为句子。我的正则表达式不考虑括号内的句子,我希望保留分隔符。 我在这里放了一个代码示例 jsFiddle.net

  • 问题内容: 我已经看到了许多相关的问题,但是都没有直接解决我想做的事情。我正在从CSV文件中读取文本行。 所有项目都用引号引起来,有些则在引号内有其他逗号。我想按逗号分隔行,但忽略引号内的逗号。有没有一种方法可以在Python中执行此操作,而无需使用许多正则表达式语句。 一个例子是: 我想将其解析为4个单独的值变量: 我想念一个简单的选择吗? 问题答案: 不要尝试重新发明轮子。 如果要读取CSV文

  • 我有一个字符串: 我想用分隔符< code >分割这个字符串 为此,我使用以下方法: 我得到了我需要的东西,除了我失去了分隔符。下面是示例:http://jsfiddle.net/JwrZ6/1/ 如何保留分隔符?