3

複数のパターンを 1 つの文字列に適用する (ループを使用しない) 簡単な方法はありますか?

それで

"c:\myfile.txt" -like "*.dat","*.txt"

$true を返す必要があります

"c:\myfile.dat" -like "*.dat","*.txt"

$true を返す必要があります

"c:\myfile.doc" -" .dat"," .txt"など

$false を返す必要があります

4

2 に答える 2

2

私はそうは思わない。正規表現を使用できます。

"c:\myfile.txt" -match '^.+\.(dat|txt)$'

アップデート

ワイルドカードパターンを含む入力から正規表現パターンを作成します。

    PS> $or = '"*.dat","*.txt","*.foo"' -replace '"|\*\.'  -replace ',','|'
    PS> $pattern = '^.+({0})$' -f $or
    PS> $pattern 
    ^.+(dat|txt|foo)$

   $string -match $pattern
于 2012-10-17T18:47:04.690 に答える
1

-matchここの代わりに使用してみることができ-likeます:

"c:\myfile.txt" -match "\.(dat|txt)$" ==> True
"c:\myfile.dat" -match "\.(dat|txt)$" ==> True
"c:\myfile.doc" -match "\.(dat|txt)$" ==> False
于 2012-10-17T18:46:31.583 に答える