Jump to content

Balanced brackets: Difference between revisions

Line 4,163:
</lang>
<b>Output:</b>
<pre>
Empty: True
[]: True
][: False
[][]: True
][][: False
[[][]]: True
[]][[]: False
</pre>
 
===PowerShell (Regex Version)===
<lang PowerShell>
function Test-BalancedBracket
{
<#
.SYNOPSIS
Tests a string for balanced brackets.
.DESCRIPTION
Tests a string for balanced brackets. ("<>", "[]", "{}" or "()")
.EXAMPLE
Test-BalancedBracket -Bracket Brace -String '[abc[def].xyz]'
.EXAMPLE
Test-BalancedBracket -Bracket Curly -String (Get-Content -Path .\Temp.ps1 -Raw)
Tests a file for balanced curly braces.
.LINK
http://go.microsoft.com/fwlink/?LinkId=133231
#>
[CmdletBinding()]
[OutputType([bool])]
Param
(
[Parameter(Mandatory=$true)]
[ValidateSet("Angle", "Brace", "Curly", "Paren")]
[string]
$Bracket,
 
[Parameter(Mandatory=$true)]
[AllowEmptyString()]
[string]
$String
)
 
if ($String -eq [String]::Empty)
{
$true
}
else
{
switch ($Bracket)
{
"Angle" { $String -match "^[^<>]*(?>(?>(?'pair'\<)[^<>]*)+(?>(?'-pair'\>)[^<>]*)+)+(?(pair)(?!))$" ; break }
"Brace" { $String -match "^[^\[\]]*(?>(?>(?'pair'\[)[^\[\]]*)+(?>(?'-pair'\])[^\[\]]*)+)+(?(pair)(?!))$"; break }
"Curly" { $String -match "^[^{}]*(?>(?>(?'pair'\{)[^{}]*)+(?>(?'-pair'\})[^{}]*)+)+(?(pair)(?!))$" ; break }
"Paren" { $String -match "^[^()]*(?>(?>(?'pair'\()[^()]*)+(?>(?'-pair'\))[^()]*)+)+(?(pair)(?!))$" ; break }
Default { $false }
}
}
}
 
 
"Empty: $(Test-BalancedBracket -Bracket Brace -String '')"
"[]: $(Test-BalancedBracket -Bracket Brace -String '[]')"
"][: $(Test-BalancedBracket -Bracket Brace -String '][')"
"[][]: $(Test-BalancedBracket -Bracket Brace -String '[][]')"
"][][: $(Test-BalancedBracket -Bracket Brace -String '][][')"
"[[][]]: $(Test-BalancedBracket -Bracket Brace -String '[[][]]')"
"[]][[]: $(Test-BalancedBracket -Bracket Brace -String '[]][[]')"
</lang>
{{Out}}
<pre>
Empty: True
308

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.