使用這個表達式測試儀:http://myregextester.com/index.php 表示我正則表達式應該工作: 正則表達式:PowerShell的正則表達式有Select-String不返回任何行
{name:"(\w*?)", rank:([\d]+)},
樣本數據採集:
{name:"AARON", rank:77},
{name:"ABBEY", rank:1583},
以下是我試圖運行的powershell腳本,將類似json的數據解析到powershell網格中。
$regex = '{name:"(\w*?)", rank:([\d]+)},'
(Select-String -Path EmailDomains.as -Pattern $regex -AllMatches).matches |foreach {
$obj = New-Object psobject
$obj |Add-Member -MemberType NoteProperty -Name Rank -Value $_.groups[1].value
$obj |Add-Member -MemberType NoteProperty -Name Name -Value $_.groups[0].value
$obj
} |Out-GridView -Title "Test"
正則表達式似乎永遠不會返回值(我猜它是一個MS正則表達式與Perl的正則表達式查詢股價,但我不能確定),所以我不知道這個問題可能是什麼。任何幫助表示讚賞!
謝謝。事實上,一旦我糾正了我的reg-ex,我很高興去。 – Richthofen 2012-07-24 21:40:03
在這種情況下的問號告訴星號不要貪婪。 – dugas 2012-07-24 21:45:35
如果這是Perl,你會是正確的。但是,就像我想的那樣,Powershell將問號看作是前一個字符的0或1的匹配。 [請參閱此處的文檔](http://lab.technet.microsoft.com/en-us/magazine/cc137764) – 2012-07-24 21:54:53