Types/System.Text.RegularExpressions.RegEx.format.ps1
Write-FormatView -TypeName System.Text.RegularExpressions.RegEx -Action { $pattern = "$($_.ToString())" @(for ($i = 0; $i -lt $pattern.Length; $i++) { if ($pattern[$i -1] -eq '\') { if ($pattern[$i -2] -ne '\' -or ($pattern[$i -2] -eq '\' -and $pattern[$i -3] -eq '\')) { . $encodeOutput $pattern[$i]; continue } } if ($i -and $pattern[$i] -eq '?' -and $pattern[$i + 1] -eq '<' -and $pattern[$i + 2] -match '[\w\-]') { # Group name . $SetOutputStyle -ForegroundColor Success # Irregular.Regex.GroupName $nameEnd = $pattern.IndexOf('>', $i) . $EncodeOutput $pattern.Substring($i, 2) . $SetOutputStyle -Underline . $EncodeOutput $pattern.Substring($i + 2, $nameEnd - ($i + 2)) . $ClearOutputStyle -Underline $i = $nameEnd . $EncodeOutput '>' . $ClearOutputStyle -ForegroundColor continue } if ('(',')','[',']' -contains $pattern[$i]) { # Grouping paranthesis . $SetOutputStyle -ForegroundColor Warning <#Irregular.Regex.Group#> -Bold . $encodeOutput $pattern[$i] . $ClearOutputStyle continue } if ('|','?','<','>','!' -contains $pattern[$i]) { . $SetOutputStyle -ForegroundColor Verbose <#Irregular.Regex.Operator#> -Bold . $encodeOutput $pattern[$i] . $ClearOutputStyle continue } if ($pattern[$i] -eq '#') { . $SetOutputStyle -ForegroundColor Success # Irregular.Regex.Comment $lineEnd = $pattern.IndexOfAny([Environment]::NewLine.ToCharArray(), $i) if (($lineEnd - $i) -gt 0) { . $EncodeOutput $pattern.Substring($i, $lineEnd -$i) $i = $lineEnd - 1 } else { . $EncodeOutput $pattern.Substring($i) $i = $pattern.Length } . $ClearOutputStyle continue } . $encodeOutput $pattern[$i] }) -join '' } Write-FormatView -TypeName System.Text.RegularExpressions.RegEx -Property GroupNames, Pattern, Options, MatchTimeout -AsList Write-FormatView -TypeName System.Text.RegularExpressions.RegEx -Property Pattern, GroupNames -Wrap |