use strict;
my $str = 'drwxrwxr-x - testetl hdp_test 0 2018-02-02 05:10 /raw/ADS/ClicksData/click/datetm=2017-10-15
drwxrwxr-x - testetl hdp_test 0 2018-02-01 09:35 /raw/ADS/ClicksData/click/datetm=2017-10-16
drwxrwxr-x - testetl hdp_test 0 2018-01-31 21:54 /raw/ADS/ClicksData/click/datetm=2017-10-17
drwxrwxr-x - testetl hdp_test 0 2018-01-31 23:59 /raw/ADS/ClicksData/click/datetm=2017-10-18
drwxrwxr-x - testetl hdp_test 0 2018-01-31 21:49 /raw/ADS/ClicksData/click/datetm=2017-10-19
drwxrwxr-x - testetl hdp_test 0 2018-02-01 09:32 /raw/ADS/ClicksData/click/datetm=2017-10-20
drwxrwxr-x - testetl hdp_test 0 2018-02-02 11:51 /raw/ADS/ClicksData/click/datetm=2017-10-21
drwxrwxr-x - testetl hdp_test 0 2018-02-01 09:08 /raw/ADS/ClicksData/click/datetm=2017-10-22
drwxrwxr-x - testetl hdp_test 0 2018-01-31 22:42 /raw/ADS/ClicksData/click/datetm=2017-10-23
drwxrwxr-x - testetl hdp_test 0 2018-02-01 09:58 /raw/ADS/ClicksData/click/datetm=2017-10-24
drwxrwxr-x - testetl hdp_test 0 2018-02-02 05:10 /raw/ADS/ClicksData/click/datetm=2017-10-25
drwxrwxr-x - testetl hdp_test 0 2018-02-01 09:46 /raw/ADS/ClicksData/click/datetm=2017-10-26
drwxrwxr-x - testetl hdp_test 0 2018-02-01 09:04 /raw/ADS/ClicksData/click/datetm=2017-10-27
drwxrwxr-x - testetl hdp_test 0 2018-02-01 09:46 /raw/ADS/ClicksData/click/datetm=2017-10-28
drwxrwxr-x - testetl hdp_test 0 2018-02-02 00:21 /raw/ADS/ClicksData/click/datetm=2017-10-29
drwxrwxr-x - testetl hdp_test 0 2018-02-02 05:09 /raw/ADS/ClicksData/click/datetm=2017-10-30
drwxrwxr-x - testetl hdp_test 0 2018-02-02 05:13 /raw/ADS/ClicksData/click/datetm=2017-10-31
drwxrwxr-x - testetl hdp_test 0 2018-02-01 14:34 /raw/ADS/ClicksData/click/datetm=2017-11-01
drwxrwxr-x - testetl hdp_test 0 2018-02-02 09:20 /raw/ADS/ClicksData/click/datetm=2017-11-02
drwxrwxr-x - testetl hdp_test 0 2018-02-01 14:35 /raw/ADS/ClicksData/click/datetm=2017-11-03
drwxrwxr-x - testetl hdp_test 0 2018-02-01 09:42 /raw/ADS/ClicksData/click/datetm=2017-11-04
drwxrwxr-x - testetl hdp_test 0 2018-02-02 09:18 /raw/ADS/ClicksData/click/datetm=2017-11-05
drwxrwxr-x - testetl hdp_test 0 2018-02-01 09:11 /raw/ADS/ClicksData/click/datetm=2017-11-06
drwxrwxr-x - testetl hdp_test 0 2018-01-31 17:56 /raw/ADS/ClicksData/click/datetm=2017-11-07
drwxrwxr-x - testetl hdp_test 0 2018-01-31 21:36 /raw/ADS/ClicksData/click/datetm=2017-11-08
drwxrwxr-x - testetl hdp_test 0 2018-01-31 16:43 /raw/ADS/ClicksData/click/datetm=2017-11-09
drwxrwxr-x - testetl hdp_test 0 2018-01-31 21:59 /raw/ADS/ClicksData/click/datetm=2017-11-10
drwxrwxr-x - testetl hdp_test 0 2018-02-01 09:23 /raw/ADS/ClicksData/click/datetm=2017-11-11
';
my $regex = qr/(?m)^.*(?:(?:201[8-9]|2\d[2-9]\d|[3-9]\d{3})-\d{2}-\d{2}|2017-(?:12-\d{2}|11-(?:0[6-9]|[12]\d|3[01])))$/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