use strict;
my $str = 'doFilter : function(){
var filters = $$(\'#\'+this.containerId+\' .filter input\', \'#\'+this.containerId+\' .filter select\');
var elements = [];
for(var i in filters){
if(filters[i].value && filters[i].value.length) elements.push(filters[i]);
}
if (!this.doFilterCallback || (this.doFilterCallback && this.doFilterCallback())) {
this.reload(this.addVarToUrl(this.filterVar, encode_base64(Form.serializeElements(elements))));
}
},
doFilter = function(){
this.reload(this.addVarToUrl(this.filterVar, \'\'));
},
function doFilter(grid, event){
var element = Event.findElement(event, \'tr\');
if([\'a\', \'input\', \'select\', \'option\'].indexOf(Event.element(event).tagName.toLowerCase())!=-1) {
return;
}
if(element.title){
setLocation(element.title);
}
}';
my $regex = qr/(function)?\s*doFilter\s*(:|=)?\s*(function)?\s*\(/p;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
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 Perl, please visit: http://perldoc.perl.org/perlre.html