use strict;
my $str = '// TAG: this is bug!
// TAG: this is bug!
\\t // TAG: this is bug!
<!-- TAG: this is a hack!
<!-- TAG: this is a hack!
* TAG: need to fix this - TAG
- TAG: this is a todo!
/* TAG: this is a todo!
// TAG: warning or ignore
- [ ] this is an unfinished item
- [x] this item is finished
- [/] this item is finished
TAG: I said something
my comment - TAG
TAG attention!
?? question?
## Sample
[1.2d] | E2E QA & Debugging
[0.6d] | Release
~~ 14.9d
~~ 19d
';
my $regex = qr/(-|\s*|\/\/|\/\*|<!--|\*|[*[0-9.]*)(\s*)(TAG|d])(-*|:*|\s*)(.*)/mp;
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