当前位置: 首页 > 面试题库 >

基于逗号的分隔正则表达式,忽略引号内的逗号

姜弘化
2023-03-14
问题内容

在我的一个项目中,我不得不处理逗号分隔文件(CSV)。我必须基于逗号来拆分数据,,而忽略引号内的逗号(即""),因此我使用了另一个堆栈溢出问题(Java:拆分逗号分隔的字符串但忽略了引号中的逗号)中提到的表达式。一切工作都很好,直到最近我才注意到它不适用于下面提到的一种特定情况。

我需要在逗号上拆分的数据字符串为:

20Y-62-27412,20Y6227412NK,BRACKET,101H,00D505060,H664374,06/25/2013,1,,

以我的理解为基础

String[] rowData = str.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");

拆分后的数据应返回一个大小为10的数组,该数组的后两个索引包含一个空字符串,相反,我得到的是大小为8的数组,即后两个逗号未视为拆分器。我在应用程序中的多个地方都使用了此表达式,所以我不想从中回溯。任何帮助,将不胜感激。谢谢


问题答案:

您需要使用split(java.lang.String,int)
方法

您的代码将如下所示:

String str = "20Y-62-27412,20Y6227412NK,BRACKET,101H,00D505060,H664374,06/25/2013,1,,";
String[] rowData = str.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1);


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

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

  • 问题内容: 我有一个模糊的字符串,像这样: 我想按逗号分割-但我需要忽略引号中的逗号。我怎样才能做到这一点?似乎正则表达式方法失败了;我想我可以在看到报价时手动扫描并进入其他模式,但是使用预先存在的库会很好。(编辑:我想我的意思是那些已经属于JDK或已经属于诸如Apache Commons之类的常用库的库。) 上面的字符串应分为: 注意:这不是CSV文件,它是文件中包含的单个字符串,具有较大的整体

  • 问题内容: 我有这样一个字符串: 我想按逗号分割-但我需要忽略引号中的逗号。我怎样才能做到这一点?似乎正则表达式方法失败了;我想我可以在看到报价时手动扫描并进入其他模式,但是使用预先存在的库会很好。 上面的字符串应分为: 问题答案: 可以使用正则表达式 输出:

  • 问题内容: 我正在寻找将其转换为6个元素的数组:a,b,c,“ d,e,f”,g,h。我正在尝试通过Javascript执行此操作。这是我到目前为止所拥有的: 但是现在,它会将双引号中的所有内容都分割开了,这是不正确的。 编辑:好的,抱歉,我对这个问题的措辞很差。给我一个字符串而不是数组。 我想使用“ split”功能将 其 转换为数组。 问题答案: 这就是我要做的。

  • 我需要一个. Net(C#)正则表达式来匹配逗号分隔的数字列表,如果有逗号作为最后一个字符,这些数字将不匹配 我已经找到了这个Regex但是当结尾有逗号时匹配 什么是符合这种模式的正则表达式模式? 编辑:为清晰起见添加了1个示例,正确答案适用于