using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?|(?:@can|hasPermissionTo|hasDirectPermission)\(\s*(?P<quote>['""])(?P<string>.*?)\1\)|\((?P<quote>['""])can:(?P<string>.*?)\1\)|\(\[[^][]*(?P<quote>['""])can:(?P<string>.*?)\1[^][]*]\))";
string input = @"@can('event-tools::menu.view')
$this->middleware('can:access registration check');
Route::prefix('administration')->middleware(['auth', 'verified', 'can:access admin area'])->group(static function () {
Route::prefix('organisation/{organisation}')->middleware(['auth', 'verified', 'can:access organisation area', 'mustHaveOrganisation'])->group(static function () {";
RegexOptions options = RegexOptions.Singleline | RegexOptions.CultureInvariant;
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