use strict;
my $str = 'N O 100% WHOLE WHEAT
N O BUTTER BREAD
N O HONEY WHT
N O LIGHT HONEY
N O LIGHT WHEAT
N O WHITE WHEAT HAMS
N O WHITE WHEAT HOTDOGS
N. OWN HONEY WHEAT BUN
N.O 6CT 100% WHOLE
N.O 6CT MULTI GRAIN
N.O. 100% W WHEAT
N.O. 100% W WHEAT
N.O. HEALTHY
N.O. Original Bagel 20 OZ
N.O. WHITE WHEAT
N.O.ALL NATURAL 12 GRAIN
N.O.ALL NATURAL WH WHT
N/O BUTTER HAMBURGER BUN
N/O DOUBLE FIBER WHEAT
NAT OWN BTR HOT DOG BUNS
NAT OWN CIN RAISIN
NAT OWN ENG MUF
NAT OWN HNY WHT HD BUNS
NAT.OWN ORG HONEY WHEAT
NATURE O BREAD 100% WHL WHEAT W/ HONEY 16 OZ
NATURES 16 OZ SGRFR WHOL GRN
NATURE\'S 2/20Z 100% WHEAT BRD
NATURE\'S 2/20Z 100% WHEAT BRD
NATURE\'S 2/20Z BUTTER BREAD
NATURE\'S 2/20Z BUTTER BREAD
NATURE\'S 2/20Z HONEY WHEAT
NATURE\'S 2/20Z HONEY WHEAT
NATURE\'S 24 OZ DOUBLE FIBER
NATURES OWN BUTTER ROLLS
NATURES OWN CINNAMON RAIS
NATURES OWN HONEY WHEAT THIN 20 OZ
NATURES OWN HONY 7 GRAIN
NATURES OWN LIFE 7 GRAINS
NATURES OWN LIFE WHEAT & PROTEIN BREAD
NO 100% W G WHEAT BREAD
NO 100% WHL GRN OVAL
NO ALL NAT HNY WHT BRY
NO SGR FRE WHOLE GRAIN
NO WHITE/WHEAT ROUND TOP
NTRS OWN HNY OAT SOFT
NTRS OWN HOTS NTRS OWN HOTS';
my $regex = qr/^((NA?TU?RE?S?\s?OWN\b)|(NAT\s?\.?OWN\b)|(N\s?\W?\.?O\.?\b)|(N\.\sOWN\b)|(NATURE\W?S\b)|(NATURE\sO\b))/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