$re = '/function (?<name>[a-zA-Z0-9]+)\s*(?<arguments>\([^()]*\)(?::\s*[^{}\s]*)?)\s*(?<body>\{[^\r{}]*(?:\{[^\r{}]*(?:\{[^\r{}]*(?:\{[^\r{}]*(?:\{[^\r{}]*(?:\{[^\r{}]*\}[^\r{}]*)*\}[^\r{}]*)*\}[^\r{}]*)*\}[^\r{}]*)*\}[^\r{}]*)*\})(?:;)?/m';
$str = 'function setupForNoActionsAvailable() {
component.canDelete = jasmine.createSpy(\'canDelete\').and.returnValue(false);
component.canMarkAsBlocked = jasmine.createSpy(\'canMarkAsBlocked\').and.returnValue(false);
component.canMarkAsReBill = jasmine.createSpy(\'canMarkAsRebill\').and.returnValue(false);
component.canMoveToInProgress = jasmine.createSpy(\'canMoveToInProgress\').and.returnValue(false);
}
function setupValidConditions() {
component.invoice = {} as any;
component.isReadonly = jasmine.createSpy(\'isReadonly\').and.returnValue(false);
invoiceHelper.canMarkAsReBill = jasmine.createSpy(\'canMarkAsReBill\').and.returnValue(true);
};
export function ageInDays(date: Date, now: Date): number {
return Math.trunc(millisecondsToDays(now.getTime() - date.getTime()));
}
function millisecondsToDays(milliseconds: number): number {
return (((milliseconds / 1000) / 60) / 60) / 24;
}
// Prevent Karma from running prematurely.
__karma__.loaded = function () { };';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
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 PHP, please visit: http://php.net/manual/en/ref.pcre.php