use strict;
my $str = 'Name
Christopher Robert York
Address
Lyric House 6b St Andrew Street
Hertford
Hertfordshire
SG14 1JA
Date of Birth
24/12/1961
Nationality
British
Directorships for Mr Christopher Robert York
Company Number Name Status Position Appointed Date Credit Limit Risk Score
12432488 �� CASTLE LEGAL SERVICES LTD Non trading Director 29/01/2020 £0 0
03075887 �� CREDITSERVE LTD. Company is dissolved Company Secretary 31/07/2006 £0 0
03075887 �� CREDITSERVE LTD. Company is dissolved Director 04/07/1995 £0 0
06534336 �� CREDITSERVE BUSINESS INFORMATION LIMITED Active - Accounts Filed Company Secretary 29/09/2008 £7,500 55
06534336 �� CREDITSERVE BUSINESS INFORMATION LIMITED Active - Accounts Filed Director 13/03/2008 £7,500 55
Ms Laura York
Name
Laura York
Address
Lyric House 6b St Andrew Street
Hertford
Hertfordshire
SG14 1JA
Date of Birth
01/06/1964
Nationality
British
Directorships for Ms Laura York
Company Number Name Status Position Appointed Date Credit Limit Risk Score
06534336 �� CREDITSERVE BUSINESS INFORMATION LIMITED Active - Accounts Filed Director 01/04/2011 £7,500 55
Company Secretary';
my $regex = qr/(?:^|\n)\s*Name\s*(?<name>[\w\W]+?)\s+Address\n(?<address>[\w\W]+?)\s+Date of Birth\s+(?<dob>[\w\W]+?)\s+Nationality\s*(?<nationality>[\w\W]+?)(?=\s)/ip;
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