【发布时间】:2018-12-16 14:31:41
【问题描述】:
我不太擅长正则表达式,我的任务是使用 powershell 将 csv 加载到数据表中。 csv 的值用引号括起来,用逗号分隔。麻烦的是,有些行由列值组成,值本身包含引号。
$csvSplit = "($csvdelimiter)"
$csvSplit += '(?=(?:[^"]|"[^"]*")*$)'
$regexOptions = [System.Text.RegularExpressions.RegexOptions]::ExplicitCapture
抛出这个问题的行中有值,其中值可能会说像3-1/8" 这样的值作为值的一部分。我也是 powershell 的菜鸟,但我真的不确定如何更改正则表达式以使其省略这些类型的情况。
非常感谢任何解释和帮助!
更新
尝试这些解决方案似乎并没有完全解决问题,只是将问题转移到了不同的位置。我被引导相信问题出在 CSV 本身,但我无法找到格式错误的示例。这些答案很棒,我希望将来有人能从阅读这篇文章及其出色的答案中有所收获。谢谢大家。
【问题讨论】:
-
是否嵌入
"实例没有转义?你的输入真的有"3-1/8""这样的值吗? -
是的,确实如此。我不确定这个 CSV 是如何生成的。
-
我不太擅长正则表达式,但这似乎可行:
"(.*?)"(,|$)。这里的想法是,匹配“双引号后紧跟逗号或行尾”之前的任何内容。 regex101.com/r/4BZkgt/3 -
看着你发送的链接,我很困惑。它似乎与单元格值匹配。我正在尝试匹配真正的分隔符,以便我可以按它们分割每一行
-
不要使用正则表达式。使用旨在正确解析 CSV 的东西。
标签: regex powershell csv datatable