use strict;
my $str = 'CHARACTER_TABULATION [ ]
LINE_FEED [
]
LINE_TABULATION []
FORM_FEED []
]
SPACE [ ]
NEXT_LINE [
]
NON_BREAKING_SPACE [ ]
OGHAM_SPACE_MARK [ ]
EN_QUAD [ ]
EM_QUAD [ ]
EN_SPACE [ ]
EM_SPACE [ ]
THREE_PER_EM_SPACE [ ]
FOUR_PER_EM_SPACE [ ]
SIX_PER_EM_SPACE [ ]
FIGURE_SPACE [ ]
PUNCTUATION_SPACE [ ]
THIN_SPACE [ ]
HAIR_SPACE [ ]
LINE_SEPARATOR [
]
PARAGRAPH_SEPARATOR [
]
NARROW_NON_BREAKING_SPACE [ ]
MEDIUM_MATHEMATICAL_SPACE [ ]
IDEOGRAPHIC_SPACE [ ]
MONGOLIAN_VOWEL_SEPARATOR []
ZERO_WIDTH_SPACE []
ZERO_WIDTH_NON_JOINER []
ZERO_WIDTH_JOINER []
WORD_JOINER []
ZERO_WIDTH_NON_BREAKING_SPACE []
INFORMATION_SEPARATOR_1 []
INFORMATION_SEPARATOR_2 []
INFORMATION_SEPARATOR_3 []
INFORMATION_SEPARATOR_4 []
LEFT_TO_RIGHT_MARK []
RIGHT_TO_LEFT_MARK []';
my $regex = qr`\p{Cf}`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