2011-07-20 3 views
1

私は$ a = 5816.3.big.jpgを持っています。シンプルなpregmatch

最初に "$ a"の前にすべての記号が表示されます。 "

どのようなpregmatchできますか?手伝って頂けますか?

答えて

3

これは何ですか?

$a = "5816.3.big.jpg" 
$a.split(".")[0] 
5816 

ごめんなさい。あなたは正規表現を望んでいた。

$a = "5816.3.big.jpg" 
[regex]::matches($a,"^([^\.]+)\.")[0].groups[1].value 
5816 

または:

$a = "5816.3.big.jpg" 
[void]($a -match "^([^\.]+)\.") 
$matches[1] 
5816 
+0

はよさそうだが、PowerShellでは動作しません。私はスプリットの正しい構文を知らない。私はそれにいくつかのコードを持っています: '$ files = Get-ChildItem -Path。\ 123; foreach($ファイル内の$ファイル) { $ a = $ file.name; $ a -split "[。]"; echo $ a; } 'の結果は4ワードです、最初にどのように作業するのですか? – butteff

+0

ありがとうございました – butteff

+0

これはアレイのスライシングがすることです。分割するとあなたと配列を与えます。 [0]はその配列の最初の要素を返します。これを試してください:$ files = Get-ChildItem -Path。\ 123; foreach($ file in $ files){($ file.name).split( "。")[0]} – mjolinor

1

ここでは別のオプションがあります:

PS > "5816.3.big.jpg" -replace '\..+$' 
5816 

PS > Get-ChildItem -Path .\123 | Foreach-Object { $_.Name -replace '\..+$' }