use strict;
my $str = '0 @N1@ NOTE Lorem ipsum dolor sit amet
0 HEAD
1 SOUR FTM
2 VERS 22.2.6.950
1 DEST FTM
1 DATE 31 MAR 2017
1 CHAR UTF-8
3 _LINK http://www.facebook.com/1247584965
2 SOUR @S122@
3 PAGE Facebook update - David Hatch - 6/5/2013
3 _LINK http://www.facebook.com/1247584965
1 RESI
2 DATE BET 1935 AND 1993
2 PLAC San Francisco, California, USA
1 RESI
2 DATE 1994
2 PLAC San Francisco, California, USA
2 SOUR @S605@
3 DATA
4 TEXT Birth date: 20 Sep 1966 Birth place: Residence date: 1994
5 CONC Residence place: San Francisco, CA
1 RESI 106 Oakcrest Rd
2 DATE 26 MAR 2017
2 PLAC San Anselmo, Marin, California, USA
1 FAMS @F500@
1 FAMC @F656@
0 @I923@ INDI
1 NAME Vincent /Crilley/
1 SEX M
1 FAMS @F254@
0 @I5899@ INDI
1 NAME Marjorie Edna /Footitt/
2 SOUR @S506@
2 SOUR @S176@
2 SOUR @S168@
2 SOUR @S624@
3 DATA
4 TEXT Residence date: Residence place: USA
2 SOUR @S115@
3 PAGE Year: 1940; Census Place: St Paul, Ramsey, Minnesota; Roll: T627_1996;
4 CONC Page: 11A; Enumeration District: 90-73.
3 DATA
4 _TEXT Birth date: abt 1918 Birth place: North Dakota Residence date: 1
5 CONC Apr 1940 Residence place: St Paul, Ramsey, Minnesota, United States
2 SOUR @S607@
3 PAGE Year: 1920; Census Place: Carrington, Foster, North Dakota; Roll:
4 CONC T625_1334; Page: 13B; Enumeration District: 117; Image: .
3 DATA';
my $regex = qr/^(0|[1-9]+[0-9]*) (@[^@]+@ |)([A-Za-z0-9_]+)( [^\n\r]*|)$/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