potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

PowerShell 7 演算子一覧

以下では特殊演算子以外を一般演算子として表記しています。和訳も便宜上のものです。適切な名前があればご指摘いただけると嬉しいです。

演算子の一覧

一般演算子

分類 演算子
算術演算子 + - * / %
代入演算子 = += -= *= /= %=
比較演算子(大小) -eq -ne -gt -lt -le -ge
比較演算子(正規表現) -match -notmatch -replace -creplace -ireplace
比較演算子(ワイルドカード) -like -notlike
比較演算子(包含) -in -notin -contains -notcontains
比較演算子(型) -is -isnot
比較演算子(論理) -bAND -bOR -bXOR -bNOT|ビットワイズhttps://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_operators?view=powershell-7#comparison-operators
論理演算子 -and -or -xor -not !
リダイレクト演算子 > >> 2> 2>> 2>&1
分割・結合演算子 -split -join
型演算子 -is -isnot -as
単項演算子 ++ --

特殊演算子

分類 演算子
グループ化演算子 ( )
部分式演算子 $( )
配列部分式演算子 @( )
コール演算子 &
バックグラウンド演算子 &
キャスト演算子 [ ]
カンマ演算子 ,
ドットソーシング演算子 .
書式化演算子 -f
インデックス演算子 [ ]
パイプライン演算子 |
パイプライン連鎖演算子 && ||
範囲演算子 ..
メンバーアクセス演算子 .
静的メンバー演算子 ::
三項演算子 ? <if-true> : <if-false>
Null合体演算子 ??
Null合体代入演算子 ??=
Null条件演算子(実験的機能) ?. ?[ ]

特殊演算子

演算子の用法

分類 演算子 用例
算術演算子 + 1 + 2 #3
算術演算子 - 1 - 2 #-1
算術演算子 * 1 * 2 #2
算術演算子 / 1 / 2 #0.5
算術演算子 % 1 % 2 #1(1を2で割ったあまり)
代入演算子 = $a = 1
代入演算子 += $a += 1
代入演算子 -= $a -= 1
代入演算子 *= $a *= 1
代入演算子 /= $a /= 1
代入演算子 %= $a %= 1
比較演算子(大小) -eq 1 -eq 2 #False(1 = 2)
比較演算子(大小) -ne 1 -ne 2 #False(1 != 2)
比較演算子(大小) -gt 1 -gt 2 #False(1 > 2)
比較演算子(大小) -lt 1 -lt 2 #True(1 < 2)
比較演算子(大小) -le 1 -le 2 #True(1 <= 2)
比較演算子(大小) -ge 1 -ge 2 #False(1 >= 2)
比較演算子正規表現 -match <長いのでこちら>
比較演算子正規表現 -notmatch
比較演算子正規表現 -replace "0123abcABCあいう" -replace "[a-z]","-" #"0123------あいう"
比較演算子正規表現 -ireplace "0123abcABCあいう" -ireplace "[a-z]","-" #"0123------あいう"
比較演算子正規表現 -creplace "0123abcABCあいう" -creplace "[a-z]","-" #"0123---ABCあいう"
比較演算子ワイルドカード -like "0123abcABCあいう" -like "012う" #True
"0123abcABCあいう","aaa" -like "
aa*" #"aaa"
比較演算子ワイルドカード -notlike "0123abcABCあいう" -like "012*う" #False
"0123abcABCあいう","aaa" -notlike #"0123abcABCあいう"
比較演算子(包含) -in 4 -in 1..4 #True
比較演算子(包含) -notin 4 -notin 1..4 #False
比較演算子(包含) -contains 1..4 -contains 2 #True
比較演算子(包含) -notcontains 1..4 -contains 2 #False
比較演算子(型) -is 0 -is [int] #True
比較演算子(型) -isnot 0 -isnot [int] #False
比較演算子(論理) -bAND
比較演算子(論理) -bOR
比較演算子(論理) -bXOR
比較演算子(論理) -bNOT
論理演算子 -and
論理演算子 -or
論理演算子 -xor
論理演算子 -not
論理演算子 !
リダイレクト演算子 >
リダイレクト演算子 >>
リダイレクト演算子 2>
リダイレクト演算子 2>>
リダイレクト演算子 2>&1
分割・結合演算子 -split
分割・結合演算子 -join
演算子 -is
演算子 -isnot
演算子 -as
単項演算子 ++
単項演算子 --
グループ化演算子 ( )
部分式演算子 $( )
配列部分式演算子 @( )
コール演算子 &
バックグラウンド演算子 &
キャスト演算子 [ ]
カンマ演算子
ドットソーシング演算子 .
書式化演算子 -f
インデックス演算子 [ ] $a[0] $b["a"]
パイプライン演算子 |
パイプライン連鎖演算子 &&
パイプライン連鎖演算子 ||
範囲演算子 ..
メンバーアクセス演算子 . a.b
静的メンバー演算子 :: [X]::Y
三項演算子 ? <if-true> : <if-false>
Null合体演算子 ??
Null合体代入演算子 ??=
Null条件演算子(実験的機能) ?. ${x}?.name #{}は?が変数名と認識されることの回避
Null条件演算子(実験的機能) ?[ ] ${x}?[0] #{}は?が変数名と認識されることの回避

-matchの用例

-match演算子は左項が単一の値(スカラー)か配列かで動作を変えます。スカラーの場合は正規表現のマッチ結果を真偽値として返して詳細を$Matchesに設定しますが、配列の場合はマッチした要素の配列を返して$Matchesは設定しません。

"abc", "012", "あいう", "0aあ", "01abあい" -match "\d"
#"012","0aあ","01abあい"

"abc012あいう" -match "\d\d" #True
$Matches
#Name                           Value
#----                           -----
#0                              01

"abc012あいう" -match "(?<num>\d+)(?<hiragana>[あ-ん])" #True
$Matches
#Name                           Value
#----                           -----
#num                            012
#hiragana                       あ
#0                              012あ

参考