正则表达式分割CSV
发布时间:2020-12-14 06:36:07 所属栏目:百科 来源:网络整理
导读:我知道这个(或类似的)已经被问了很多次,但是尝试了许多可能性,我没有找到一个正常工作100%的正则表达式。 我有一个CSV文件,我试图将它拆分成一个数组,但遇到两个问题:引用逗号和空元素。 CSV看起来像: 123,2.99,AMO024,Title,"Description,more info"
我知道这个(或类似的)已经被问了很多次,但是尝试了许多可能性,我没有找到一个正常工作100%的正则表达式。
我有一个CSV文件,我试图将它拆分成一个数组,但遇到两个问题:引用逗号和空元素。 CSV看起来像: 123,2.99,AMO024,Title,"Description,more info",123987564 我试图使用的正则表达式是: thisLine.split(/,(?=(?:[^"]*"[^"]*")*(?![^"]*"))/) 唯一的问题是在我的输出数组中,第5个元素出现为123987564而不是一个空字符串。
描述
而不是使用分割,我认为简单地执行匹配并处理所有找到的匹配会更容易。 这个表达式将: >在逗号分隔上划分示例文本 正则表达式:(?:^ |,)(?= [^“] |(”)?“”((?(1)[^“] * | [^,”] *)) | $) 例 示例文本 123,123987564 ASP示例使用非java表达式 Set regEx = New RegExp regEx.Global = True regEx.IgnoreCase = True regEx.MultiLine = True sourcestring = "your source string" regEx.Pattern = "(?:^|,)(?=[^""]|("")?)""?((?(1)[^""]*|[^,""]*))""?(?=,|$)" Set Matches = regEx.Execute(sourcestring) For z = 0 to Matches.Count-1 results = results & "Matches(" & z & ") = " & chr(34) & Server.HTMLEncode(Matches(z)) & chr(34) & chr(13) For zz = 0 to Matches(z).SubMatches.Count-1 results = results & "Matches(" & z & ").SubMatches(" & zz & ") = " & chr(34) & Server.HTMLEncode(Matches(z).SubMatches(zz)) & chr(34) & chr(13) next results=Left(results,Len(results)-1) & chr(13) next Response.Write "<pre>" & results 使用非java表达式匹配 组0获取包含逗号的整个子字符串 [0][0] = 123 [0][1] = [0][2] = 123 [1][0] =,2.99 [1][1] = [1][2] = 2.99 [2][0] =,AMO024 [2][1] = [2][2] = AMO024 [3][0] =,Title [3][1] = [3][2] = Title [4][0] =,more info" [4][1] = " [4][2] = Description,more info [5][0] =,[5][1] = [5][2] = [6][0] =,123987564 [6][1] = [6][2] = 123987564 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |