Path屬性、Filename屬性、LineNumber屬性 Pattern屬性 IgnoreCase屬性 Line屬性、Matches屬性 Match物件 - Groups屬性 Match物件 - Captures屬性
顯示檔案內容 PS R:\> gc 1.txt aaa bbb ccc ddd eee PS R:\>
取得字串陣列 PS R:\> $arrFullName = (dir *.jpg).FullName PS R:\> $arrFullName R:\1.jpg R:\2.jpg R:\3.jpg R:\4.jpg R:\5.jpg PS R:\>
Path屬性、Filename屬性、LineNumber屬性
資料來源是檔案 PS R:\> Select-String -Pattern 'b' -Path 1.txt 1.txt:2:bbb PS R:\> $r = Select-String -Pattern 'b' -Path 1.txt PS R:\>$r.Path R:\1.txt PS R:\> $r.Filename 1.txt PS R:\>$r.LineNumber 2 PS R:\>
資料來源是變數 PS R:\> $arrFullName | Select-String -Pattern '2\.jpg' R:\2.jpg PS R:\> $r = $arrFullName | Select-String -Pattern '2\.jpg' PS R:\> $r.Path InputStream PS R:\> $r.Filename InputStream PS R:\>$r.LineNumber 2 PS R:\>
Pattern屬性
二個Pattern PS R:\> $arrFullName | Select-String -Pattern '2\.jpg','2' R:\2.jpg PS R:\>
用哪一個Pattern找到的? PS R:\> $r = $arrFullName | Select-String -Pattern '2\.jpg','2' PS R:\> $r.Pattern 2\.jpg PS R:\>
交換Pattern順序 PS R:\> $r = $arrFullName | Select-String -Pattern '2','2\.jpg' PS R:\> $r.Pattern 2 PS R:\>
IgnoreCase屬性
是否「不區分大小寫」 PS R:\> $r = $arrFullName | Select-String -Pattern '2\.jpg' PS R:\> $r.IgnoreCase True PS R:\> $r = $arrFullName | Select-String -Pattern '2\.jpg' -CaseSensitive PS R:\> $r.IgnoreCase False PS R:\>
Regex裡面的設定,不影響IgnoreCase屬性 PS R:\> $r = $arrFullName | Select-String -Pattern '(?i)2\.jpg' PS R:\> $r.IgnoreCase True PS R:\> $r = $arrFullName | Select-String -Pattern '(?-i)2\.jpg' PS R:\> $r.IgnoreCase True PS R:\>
Line屬性、Matches屬性
Line屬性:整行內容 (含有關鍵字的行) PS R:\> $s = 'a12345------a789' PS R:\> $s | Select-String -Pattern 'a\d+' a12345------a789 PS R:\> $r = $s | Select-String -Pattern 'a\d+' PS R:\> $r.Count 1 PS R:\> $r.Line a12345------a789 PS R:\>
Matches屬性:一個陣列 (內含一個or多個Match物件) PS R:\> $r.Matches Groups : {0} Success : True Name : 0 Captures : {0} Index : 0 Length : 6 Value : a12345 PS R:\> $r.Matches.gettype().name Match[] PS R:\> $r.Matches.Count 1 PS R:\> $s = 'a12345------a789' PS R:\> $r2 = $s | Select-String -Pattern 'a\d+' -AllMatches PS R:\> $r2.Count 1 PS R:\> $r2.Matches Groups : {0} Success : True Name : 0 Captures : {0} Index : 0 Length : 6 Value : a12345 Groups : {0} Success : True Name : 0 Captures : {0} Index : 12 Length : 4 Value : a789 PS R:\> $r2.Matches.Count 2 PS R:\>
Match物件 - Groups屬性
Group名稱:根據小括弧位置 PS R:\> $s = 'a12345------a789' PS R:\> $s | Select-String -Pattern '(a)(\d+)' a12345------a789 PS R:\> $r = $s | Select-String -Pattern '(a)(\d+)' PS R:\> $r.Matches Groups : {0, 1, 2} Success : True Name : 0 Captures : {0} Index : 0 Length : 6 Value : a12345 PS R:\> $r.Matches.gettype().name Match[] PS R:\> $r.Matches.Count 1 PS R:\> $r.Matches.Value a12345 PS R:\> $r.Matches[0].Value a12345 PS R:\> $r.Matches[1].Value PS R:\> $r.Matches[0].Groups[0].Value a12345 PS R:\> $r.Matches[0].Groups[1].Value a PS R:\> $r.Matches[0].Groups[2].Value 12345 PS R:\>
自訂Group名稱 PS R:\> $s = 'a12345------a789' PS R:\> $r = $s | Select-String -Pattern '(?<name1>a)(?<name2>\d+)' PS R:\> $r.Matches Groups : {0, name1, name2} Success : True Name : 0 Captures : {0} Index : 0 Length : 6 Value : a12345 PS R:\> $r.Matches[0].Value a12345 PS R:\> $r.Matches[0].Groups[0].Value a12345 PS R:\> $r.Matches[0].Groups[1].Value a PS R:\> $r.Matches[0].Groups[2].Value 12345 PS R:\> $r.Matches[0].Groups[3].Value PS R:\> $r.Matches[0].Groups['name1'].Value a PS R:\> $r.Matches[0].Groups['name2'].Value 12345 PS R:\> $r.Matches[0].Groups['aaaaa'].Value PS R:\>
$r.Matches[0] 等於 $r.Matches[0].Groups[0] PS R:\> $r.Matches[0] Groups : {0, name1, name2} Success : True Name : 0 Captures : {0} Index : 0 Length : 6 Value : a12345 PS R:\> $r.Matches[0].Groups[0] Groups : {0, name1, name2} Success : True Name : 0 Captures : {0} Index : 0 Length : 6 Value : a12345 PS R:\>
Groups屬性:列出所有Group PS R:\> $r.Matches[0].Groups Groups : {0, name1, name2} Success : True Name : 0 Captures : {0} Index : 0 Length : 6 Value : a12345 Success : True Name : name1 Captures : {name1} Index : 0 Length : 1 Value : a Success : True Name : name2 Captures : {name2} Index : 1 Length : 5 Value : 12345 PS R:\> $r.Matches[0].Groups[0].Groups 結果同上 PS R:\>
Match物件 - Captures屬性
小括弧後面:沒有量詞 PS R:\> $s = 'a5678---a9012' PS R:\> $r = $s | Select-String -Pattern 'a(?<two>\d\d)' PS R:\> $r.Matches[0].Value a56 PS R:\> $r.Matches[0].Groups['two'].Value 56 PS R:\>
小括弧後面:有量詞 PS R:\> $r = $s | Select-String -Pattern 'a(?<two>\d\d)+' PS R:\> $r.Matches[0].Value a5678 PS R:\> $r.Matches[0].Groups['two'].Value 78←注意這裡 PS R:\> $r.Matches[0].Groups['two'].Captures Index Length Value ----- ------ ----- 1 2 56 3 2 78 PS R:\> $r.Matches[0].Groups['two'].Captures[0] Index Length Value ----- ------ ----- 1 2 56 PS R:\> $r.Matches[0].Groups['two'].Captures[1] Success : True Name : two Captures : {56, two} Index : 3 Length : 2 Value : 78 最後一個Capture等於Group本身 PS R:\> $r.Matches[0].Groups['two'] Success : True Name : two Captures : {56, two} Index : 3 Length : 2 Value : 78 PS R:\>
沒有留言:
張貼留言