2019年3月2日土曜日

文字列配列の抽出

Powershellでの文字列抽出の例
正規表現(match)が多機能で一番汎用性があります。
抽出条件がシンプルなのであれば、処理が軽いワイルドカード(like)が使えます。
ただ、数十万回とか回さないと差は分からないと思う…。
同じスクリプト内で、正規表現とワイルドカードを織り交ぜるとバグを埋め込みやすいので、基本は正規表現に統一した方が良いです。

# 文字列配列
$Array = @()
$Array += '1行目:a'
$Array += '2行目:bb'
$Array += '3行目:ccc'
## 要素数(行数)
$Array.Length
$Array
## 正規表現で抽出①
$Array -match 'b'
## 正規表現で抽出②(上①と同じ結果)
foreach ( $String in $Array ) {
    if ( $String -match 'b' ) {
        $String
    }
}
## ワイルドカードで抽出①
$Array -like '*c'
## ワイルドカードで抽出②(上①と同じ結果)
foreach ( $i in 0..($Array.Length -1) ) {
    if ( $Array[$i] -like '*c' ) {
        $Array[$i]
    }
}

# 要注意
## 演算子 -match や -like は左側が変数か配列化で結果が異なります。この違いを理解していないとハマります。(上の抽出①と②に関連)
$Example1 = '単なる文字列'
$Example2 = @( '1行だけの文字列配列' )
$Example1 -match '文字列'
$Example2 -match '文字列'


0 件のコメント:

コメントを投稿