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