Dav*_*vid 6 regex powershell split
之前已经问过这个问题,但我一直试图在powershell中使用一个解决方案但是没有得到预期的结果.
$line = '1,2,"N",09/04/13,"P09042013ZSD(1,0)","ZSD"'
[string[]] $splitColumns = $line.Split('(,)(?=(?:[^"]|"[^"]*")*$)', [StringSplitOptions]'RemoveEmptyEntries')
Run Code Online (Sandbox Code Playgroud)
当我循环通过我期待的分裂值
1
2
"N"
09/04/13
"P09042013ZSD(1,0)"
"ZSD"
Run Code Online (Sandbox Code Playgroud)
但我得到了
1
2
N
09/04/13
P09042013ZSD
1
0
ZSD
Run Code Online (Sandbox Code Playgroud)
我使用带有ExplicitCapture设置的http://regexhero.net/tester/(Split)测试了正则表达式,并返回了所需的结果.
工作方案
$RegexOptions = [System.Text.RegularExpressions.RegexOptions]
$csvSplit = '(,)(?=(?:[^"]|"[^"]*")*$)'
$splitColumns = [regex]::Split("StringHere", $csvSplit, $RegexOptions::ExplicitCapture)
Run Code Online (Sandbox Code Playgroud)
[string].split()方法不接受regex分裂但只是[char[]]或[string[]].
你可以尝试这样:
$line -split ',(?=(?:[^"]|"[^"]*")*$)'
Run Code Online (Sandbox Code Playgroud)
powershell -split接受regex分割文本
使用.net你可以这样做:
[regex]::Split( $line , ',(?=(?:[^"]|"[^"]*")*$)' )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5876 次 |
| 最近记录: |