using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\[\@if(not)?:([a-zA-Z0-9]+)(?:=(.*?))?\].*?\[\@endif:\2\]";
string input = @"<!-- <h1>[!WLANSettings]</h1> -->
[@if:examplevar=notgiven]this text won't show[@endif:examplevar]
[@if:wlanena]
[@if:wlanauto]
<table id=""wlanavail"" class=""colorrows inputtable"">
<tr id=""firstrow"">
<th width=""30px""></th>
<th width=""240px"">[!Name] (SSID)</th>
<th width=""110px"">[!Encryption]</th>
<th width=""150px"">[!SignalStrength]</th>
<th width=""200px"">[!MAC]</th>
</tr>
<tr id=""loadingrow"">
<td colspan=5 class=""centertext""><img src=""resources/loading.gif""
id=""loadingWlanScan""></td>
</tr>
<tr>
<td></td>
<td colspan=4><input type=""button"" id=""rescan""
value=""[!Refresh]"" style=""width: 200px""></td>
</tr>
</table>
<p></p>
[@endif:wlanauto]
<table id=""wlansettings"" class=""inputTable"">
<tr id=""wlannamerow"" [@if:wlanauto]style=""display: none;""[@endif:wlanauto]>
<td>[!WLANName]</td>
<td><input type=""text"" name=""wlanname"" id=""wlanname""
[@if:wlanauto]value=""[@wlanname]""[@endif:wlanauto] style=""width: 309px;""></td>
</tr>
<tr>
<td>[!Password]:</td>
<td><input type=""text"" name=""wlanpass"" id=""wlanpass""
style=""width: 309px;""></td>
</tr>
<tr>
<td colspan=""2"" >
<input type=""button""
[@if:wlanauto]id=""manualcfg"" name=""manualcfg"" value=""[!ManualConfig]""[@endif:wlanauto]
[@ifnot:wlanauto]id=""autocfg"" name=""autocfg"" value=""[!AutomaticConfig]""[@endif:wlanauto]
onclick=""handleMultiform(event, this);"" style=""width: 180px;"">
</td>
</tr>
<tr>
<td>
<input type=""hidden"" name=""encinput"" id=""encinput"" value=""></td>
<td id=""wlaninfo""></td>
</tr>
</table>
[@ipsettings]
[@endif:wlanena]
[@ifnot:wlanena]
[!NoWLANDevicePluggedIn]
<p>
<input type=""button"" name=""back"" onclick=""handleMultiform(event, this);"" value=""[!Back]"" />
</p>
[@endif:wlanena]
";
RegexOptions options = RegexOptions.Singleline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx