regex - 如何用逗号分割字符串忽略双引​​号中的逗号

标签 regex powershell split

之前有人问过这个问题,但我一直试图在 中找到解决方案powershell 但没有得到想要的结果。

$line = '1,2,"N",09/04/13,"P09042013ZSD(1,0)","ZSD"'
[string[]] $splitColumns = $line.Split('(,)(?=(?:[^"]|"[^"]*")*$)', [StringSplitOptions]'RemoveEmptyEntries')

当我循环我期望的分割值时
1
2
"N"
09/04/13
"P09042013ZSD(1,0)"
"ZSD"

但我越来越
1
2
N
09/04/13
P09042013ZSD
1
0
ZSD

我已经使用 http://regexhero.net/tester/ 测试了正则表达式(Split) 与 ExplicitCapture 设置并返回所需的结果。

工作解决方案
$RegexOptions = [System.Text.RegularExpressions.RegexOptions]
$csvSplit = '(,)(?=(?:[^"]|"[^"]*")*$)'

$splitColumns = [regex]::Split("StringHere", $csvSplit, $RegexOptions::ExplicitCapture)

最佳答案

[string].split()方法不接受 regex在拆分但只是 [char[]][string[]] .

你可以这样试试:

 $line -split ',(?=(?:[^"]|"[^"]*")*$)' 

powershell -split接受 regex用于拆分文本

使用 .net 你可以这样做:
[regex]::Split( $line , ',(?=(?:[^"]|"[^"]*")*$)' )

关于regex - 如何用逗号分割字符串忽略双引​​号中的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15927291/

相关文章:

php - php 是否有任何特殊字符类,如 [ :alnum:] for regex expressions?

java - 如何将字符串(通过匹配一组正则表达式)拆分为标记并在 JAVA 中打印每个标记?

regex - sed 尝试用另一个字符串替换字符串

powershell - 如何从 PowerShell 启动远程桌面?

powershell,如何仅给定父进程ID来获取子进程ID

javascript - 如何创建具有最大元素的唯一键数组?

JavaScript 正则表达式

python-2.7 - 在Python中的分隔符'\'处分割字符串

用于通配符 (*) 搜索的正则表达式

powershell - PowerShell 减法是否在内部将 uint32 值转换为 int32?