PowerShell HelpFile - about_split
 記事記号:[me1584] 初版:2011/May/10

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

トピック
    about_Split

簡易説明
    split 演算子を使用して、1 つまたは複数の文字列を部分文字列に分割する方法につ
    いて説明します。

詳細説明
    split 演算子は、1 つまたは複数の文字列を部分文字列に分割します。この分割操作
    に関して、次の要素を変更できます。
	
	-- 区切り記号。既定値は空白ですが、区切り記号を指定する文字、文字列、パ
           ターン、またはスクリプト ブロックを指定できます。
	
	-- 部分文字列の最大数。既定では、すべての部分文字列が返されます。部分文
           字列の数よりも小さい数値を指定した場合、残りの部分文字列が最後の部分
           文字列に連結されます。

	-- 区切り記号の一致条件を指定するオプション (SimpleMatch、Multiline など)。


  構文

   -split 演算子の構文を次に示します。

   実際のコマンドにパラメーター名は指定しません。パラメーターの値のみ指定します。
   この構文に示されている順序で値を指定する必要があります。

	-Split <String>

	<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]

	<String> -Split {<ScriptBlock>} [,<Max-substrings>]

   split ステートメントでは、-iSplit または -cSplit を -split の代わりに使用する
   ことができます。-iSplit および -split 演算子では、大文字と小文字は区別されま
   せん。-cSplit 演算子では、区切り規則を適用するときに大文字と小文字が区別され
   ます。


  パラメーター

   <String>
        分割の対象となる文字列を指定します。複数の文字列を指定することもできます。
        複数の文字列を指定して実行した場合、すべての文字列が同じ区切り規則で分割
        されます。次に例を示します。

	    -split "red yellow blue green"
	    red
            yellow
	    blue
	    green

   <Delimiter>
        部分文字列の終端を表す文字です。既定の区切り記号は空白です。空白とは、ス
        ペースのほか、改行 (`n) やタブ (`t) など、印字されない文字も該当します。
        文字列を分割した場合、いずれの部分文字列にも区切り記号は含まれません。次
        に例を示します。

	    "Lastname:FirstName:Address" -split ":"
	    Lastname
	    FirstName
	    Address
	
    <Max-substrings>
        取得する部分文字列の最大数を指定します。既定では、すべての部分文字列が区
        切り記号で分割されます。指定した数より多くの部分文字列が存在した場合、残
        りの部分文字列が最後の部分文字列に連結されます。部分文字列が、指定した数
        よりも少なかった場合は、すべての部分文字列が返されます。値に 0 または負の
        値を指定すると、すべての部分文字列が返されます。

        split 演算子に複数の文字列 (文字列の配列) を渡した場合、Max-substrings の
        指定は、それぞれの文字列に対して個別に適用されます。次に例を示します。

	    $c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" $c 
	    -split ",", 5
	    Mercury
	    Venus
	    Earth
	    Mars
	    Jupiter,Saturn,Uranus,Neptune
	

    <ScriptBlock>
        区切り記号の適用規則を指定する式です。$true または $false に評価できる式
        であることが必要です。スクリプト ブロックは中かっこで囲みます。次に例を
        示します。
	
            $c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptu
            ne" $c -split {$_ -eq "e" -or $_ -eq "p"}
	    M
	    rcury,V
	    nus,Earth,Mars,Ju
	    it
	    r,Saturn,Uranus,N
	
	    tun

    <Options>
        オプション名は引用符で囲みます。オプションを使用できるのは、ステートメン
        トに <Max-substrings> パラメーターが使用されている場合だけです。

        Options パラメーターの構文は次のとおりです。

	    "SimpleMatch [,IgnoreCase]"

            "[RegexMatch] [,IgnoreCase] [,CultureInvariant] 
            [,IgnorePatternWhitespace] [,ExplicitCapture] 
            [,Singleline | ,Multiline]"

 
        SimpleMatch のオプションは次のとおりです。
         	
          -- SimpleMatch: 区切り記号の評価時に単純な文字列比較が使用されます。Re
             gexMatch と組み合わせて使用することはできません。

          -- IgnoreCase: 大文字と小文字を区別しない比較を強制的に (-cSplit 演算
             子が指定されていたとしても) 行います。


        RegexMatch のオプションは次のとおりです。

          -- RegexMatch: 正規表現による一致を使用して、区切り記号を評価します。
             これが既定の動作です。SimpleMatch と組み合わせて使用することはでき
             ません。

          -- IgnoreCase: 大文字と小文字を区別しない比較を強制的に (-cSplit 演算
             子が指定されていたとしても) 行います。

          -- CultureInvariant: 区切り記号の評価時に、言語のカルチャの違いを無視
             します。RegexMatch でのみ有効です。

          -- IgnorePatternWhitespace: 番号記号 (#) でマークされたコメントおよび
             エスケープされていない空白を無視します。RegexMatch でのみ有効です。

          -- Multiline: Multiline モードでは、文字列の開始と終了に加え、行の開
             始と終了が認識されます。RegexMatch でのみ有効です。既定値は Single
             line です。

          -- Singleline: Singleline モードでは、文字列の開始と終了のみが認識され
             ます。RegexMatch でのみ有効です。既定値は Singleline です。

          -- ExplicitCapture: 名前のないマッチ グループを無視し、明示的に指定さ
             れたキャプチャ グループのみが結果リストとして返されるようにします。
             RegexMatch でのみ有効です。
	

  単項および二項の Split 演算子

    単項 split 演算子 (-split <string>) には、コンマよりも高い優先度が与えられて
    います。そのため、文字列のコンマ区切り一覧を単項 split 演算子に渡した場合、
    最初の文字列 (1 つ目のコンマの前の文字列) だけが分割されます。

    複数の文字列を分割対象にする場合は、二項の split 演算子 (<string> -split <de
    limiter>) を使用してください。すべての文字列をかっこで囲むか、文字列を変数に
    格納して split 演算子に渡すようにします。

    次に例を示します。

	-split "1 2", "a b"
	1
	2
 	a b


	"1 2", "a b" -split " "
	1
	2
 	a
	b


	-split ("1 2", "a b")
	1
	2
 	a
	b

	$a = "1 2", "a b"
	-split $a
	1
	2
 	a
	b

    
  例

    次のステートメントは、文字列を空白の位置で分割します。

	C:\PS> -split "Windows PowerShell 2.0`nWindows PowerShell with remoting"

	Windows
	PowerShell
	2.0
	Windows
	PowerShell
	with
	remoting


    次のステートメントは、文字列をコンマの位置で分割します。

	C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','

        Mercury
        Venus
        Earth
        Mars
        Jupiter
        Saturn
        Uranus
        Neptune


    次のステートメントは、文字列をパターン ("er") の位置で分割します。

	C:\PS>"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'

	M
	cury,Venus,Earth,Mars,Jupit
	,Saturn,Uranus,Neptune



    次のステートメントは、アルファベットの "N" の位置で、大文字と小文字を区別し
    た分割を実行します。

	C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 
        'N'

	Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus, eptune



    次のステートメントは、文字列を "e" および "t" の位置で分割します。

        C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 
        '[et]'

        M
        rcury,V
        nus,
        ar
        h,Mars,Jupi

        r,Sa
        urn,Uranus,N
        p
        un


    次のステートメントは、"e" および "r" の位置で文字列を分割します。ただし、分
    割後の部分文字列数は 6 つまでとします。

        C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 
        '[er]', 6

	M

	cu
	y,V
	nus,
	arth,Mars,Jupiter,Saturn,Uranus,Neptune



    次のステートメントは、文字列を 3 つの部分文字列に分割します。

        C:\PS> "a,b,c,d,e,f,g,h" -split ",", 3

	a
	b
	c,d,e,f,g,h


    次のステートメントは、2 つの文字列を 3 つの部分文字列に分割します。制限は、
    各文字列に対して別々に適用されます。

        C:\PS> "a,b,c,d", "e,f,g,h" -split ",", 3

	a
	b
	c,d
	e
	f
	g,h


    次のステートメントは、here-string の各行を先頭の数字で分割します。Multiline 
    オプションが使用されているので、文字列の先頭だけでなく、各行の先頭が認識され
    ます。

    0 は、"すべて返す" を意味する Max-substrings パラメーターの値です。Multiline 
    などのオプションは、Max-substrings の値を指定した場合にのみ使用できます。
    
        C:\PS> $a = @'
	1The first line.
	2The second line.
	3The third of three lines.
	'@
        
        C:\PS> $a -split "^\d", 0, "multiline"
	
	The first line.


	The second line.


	The third of three lines.



    次のステートメントは、SimpleMatch オプションを使用して、ドット (.) の区切り
    記号を通常の文字として解釈するように -split 演算子に指示しています。

    既定 (RegexMatch) では、引用符で囲まれたドット (".") は、改行文字 (\n) 以外
    の任意の文字と解釈されます。そのため、split ステートメントからは、改行以外の
    文字ごとに空白行が返されます。

    0 は、"すべて返す" を意味する Max-substrings パラメーターの値です。SimpleMat
    ch などのオプションは、Max-substrings の値を指定した場合にのみ使用できます。

        C:\PS> "This.is.a.test" -split ".", 0, "simplematch"

	This
        is
        a
	test	



    次のステートメントは、変数の値に応じて、2 つの区切り記号のいずれかの位置で文
    字列を分割します。

        C:\PS>	$i = 1
        C:\PS>	$c = "LastName, FirstName; Address, City, State, Zip"
        C:\PS>	$c -split {if ($i -lt 1) {$_ -eq ","} else {$_ -eq ";"}}

	LastName, FirstName
	 Address, City, State, Zip
		
	

    次の split ステートメントは、まず XML ファイルを山かっこの位置で分割した後、
    セミコロンで分割しています。これにより、XML ファイルを見やすい形式に整形する
    ことができます。

        C:\PS>	get-process powershell | export-clixml ps.xml
        C:\PS>	$x = import-clixml ps.xml
        C:\PS>	$x = $x -split "<"
        C:\PS>	$x = $x -split ";"


    結果を表示するには、「$x」と入力します。
	
	C:\PS> $x

        @{__NounName=Process
	Name=powershell
	Handles=428
	VM=150081536
	WS=34840576
	PM=36253696
	...


関連項目
    Split-Path
    about_Operators
    about_Comparison_Operators
    about_Join
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_split
ご利用数: 1973209
感想・要望・問い合わせは こちら