use strict;
my $str = '" This is a random sentence \' with \'a quote, the quote should match"
" There is no quote here thats the problem" Anything here should not match but now it does: \' .
" Some text " some more text " this is a quote : \' that should match"
" When there is a quote (\') here, the other one does not work : " \' and that\'s perfect " even if you remove the first one this : " (\') " will make it work because of the greedy ( I think ) but ifyou remove those between parenthesis, the other one is matching as of now, which I do not want to happen."
Another example would be this one : The following should not work, but it does "This is being quoted" not this: (\') " and this is also being quoted "
"\'"
';
my $regex = qr/(?:(?:^|\G(?<!^)[^'"]*")[^"]*+(?:"[^"']*"[^"]*)*+"|\G(?<!^))[^'"]*+(')/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