ja-JP/about_Regular_Expressions.help.txt
|
TOPIC about_Regular_Expressions 簡単な説明 正規表現は、文字列のパターンを記述するための表記法です。 PowerShell は .NET の正規表現エンジンを使用します。 (PSHelpJaJP 日本語パッチ版) 詳細な説明 PowerShell では、-match、-replace、-split などの演算子や、 Select-String コマンドレット、switch ステートメントの -Regex オプションなどで正規表現を使えます。 最も単純な正規表現は、リテラル文字そのものです。次の例は 文字列 "book" に "oo" が含まれるかどうかを判定します。 'book' -match 'oo' # True 文字クラス [ ] 角かっこ内のいずれか 1 文字に一致する 'big' -match 'b[iou]g' # True [^ ] 角かっこ内に「含まれない」1 文字に一致する 'bug' -match 'b[^iou]g' # False [a-z] 文字の範囲に一致する (例: [A-Z] [0-9]) . 改行を除く任意の 1 文字に一致する よく使う文字クラスの短縮表記: \d 数字に一致する \D 数字以外に一致する \w 単語構成文字に一致する \W 単語構成文字以外に一致する \s 空白文字に一致する \S 空白文字以外に一致する 例: '123' -match '\d+' # True 'abc def' -match '\w+\s\w+' # True 量指定子 * 直前の要素の 0 回以上の繰り返し + 直前の要素の 1 回以上の繰り返し ? 直前の要素の 0 回または 1 回 {n} ちょうど n 回 {n,} n 回以上 {n,m} n 回以上 m 回以下 例: 'aaa' -match 'a{2,3}' # True アンカー ^ 文字列(または行)の先頭に一致する $ 文字列(または行)の末尾に一致する 例: 'PowerShell' -match '^Power' # True 'PowerShell' -match 'Shell$' # True グループとキャプチャ 丸かっこ ( ) はキャプチャグループを作ります。-match が成功すると、 キャプチャした内容は自動変数 $Matches (ハッシュテーブル) に 格納されます。$Matches[0] は一致全体、$Matches[1] 以降は 各グループです。 'user@example.com' -match '(\w+)@(\w+)' $Matches[1] # user $Matches[2] # example 名前付きキャプチャは ?<名前> 構文で指定し、名前で参照できます。 'user@example.com' -match '(?<name>\w+)@(?<domain>\w+)' $Matches['name'] # user $Matches['domain'] # example 置換 -replace 演算子で、一致した部分を動的に置換できます。置換文字列 では $1、$2 などでキャプチャグループを、$& で一致全体を参照 できます。 例: # 日付の区切り文字を入れ替える 'DivId 1234' -replace 'DivId (\d+)', 'Division $1' # 結果: Division 1234 大文字と小文字の区別 PowerShell の正規表現演算子は既定で大文字と小文字を区別しません。 区別したい場合は、次の演算子やオプションを使います。 -cmatch / -creplace / -csplit 大小を区別するバリアント Select-String -CaseSensitive 大小を区別して検索 switch -CaseSensitive 大小を区別して分岐 例: 'ABC' -match 'abc' # True (既定では区別しない) 'ABC' -cmatch 'abc' # False (c 付きは区別する) 注意 PowerShell の正規表現は .NET の実装に基づいています。本トピックで 扱っていない高度な構文(先読み・後読みなど)については、.NET の 正規表現に関するドキュメントを参照してください。 関連項目 about_Comparison_Operators about_Operators about_Split about_Switch about_Automatic_Variables (※ $Matches について) Select-String ---- 原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP |