use strict;
my $str = '#Test-2019-8
#1.\'do+g\'
dog, doooog, abcdogef,
asdooooijk dooog asdoogghj
\'dog\', \'doooog\', \'abcdogef\'
#2. \'ab*d\'
ad, abd, abbbd
\'ad\', \'abd\', \'abbbbd\'
\'sad\', \'cabd\', \'abbbds\'
#3. \'[xy]{2}AB\'
\'xxAB\', \'xyAB\',\'yyAB\' \'2xxAB\'
#4. \'[a-z].?\'
\'aA\', \'b9\', \'z\' \'bX\'
\'aB z8 b6\'
#5. \'5[abc]?ef\'
\'5aef\', \'a5bef\', \'5ef\' \'5ef\'
#6. Taiwan ID : \'([A-Z])([12])(\\d{8})\',\'[A-Z][12]\\d{8}\'
\'A102926987\', \'B212345678\'
#7. mobile tel_num:\'(09)(\\d\\d)[-\\s](\\d{3})[-\\s](\\d{3})\'
\'0988 123 456\', \'0978-456-789\'
# : \'09\\d\\d[-\\s]\\d\\d\\d\'
\'0924-357\'
#8. Home tel_num:
# \'([\\(]?\\d\\d[\\)-]?)([\\d]{4})([-\\s]{1}[\\d]{4})\'
\'(02)2257 3150\', \'02-2250-3457\',\'(12)2245 3214\'
# \'[\\(]?(0[23])[\\)-]?(\\d{4})\'
\'(02)2345\', \'03-1348\'
#9. Date Time:yyyy/mm/dd
#\'(20[12]\\d)[-\\/]([1]?[\\d])[-\\/]([1-3][\\d])\'
\'2019/1/25\', \'2018-12-31\'
#\'(20[12]\\d)[-\\/]([01]\\d)[-\\/](\\d{2})\'
\'2019/01/15\' ,\'2020-11-28\'
#10. floating number: \'\\$([\\d]*)[\\.]?(\\d+)\'
\'$123.34\', \'$2345\' \'$0.234\' ,\'1.87\'
';
my $regex = qr/'\$([\d]*)[\.]?(\d+)'/imp;
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