summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl0/lib/pods/perlreref.pod
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl0/lib/pods/perlreref.pod')
-rwxr-xr-xMaster/tlpkg/tlperl0/lib/pods/perlreref.pod364
1 files changed, 364 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl0/lib/pods/perlreref.pod b/Master/tlpkg/tlperl0/lib/pods/perlreref.pod
new file mode 100755
index 00000000000..b9fb3b02026
--- /dev/null
+++ b/Master/tlpkg/tlperl0/lib/pods/perlreref.pod
@@ -0,0 +1,364 @@
+=head1 NAME
+
+perlreref - Perl Regular Expressions Reference
+
+=head1 DESCRIPTION
+
+This is a quick reference to Perl's regular expressions.
+For full information see L<perlre> and L<perlop>, as well
+as the L</"SEE ALSO"> section in this document.
+
+=head2 OPERATORS
+
+C<=~> determines to which variable the regex is applied.
+In its absence, $_ is used.
+
+ $var =~ /foo/;
+
+C<!~> determines to which variable the regex is applied,
+and negates the result of the match; it returns
+false if the match succeeds, and true if it fails.
+
+ $var !~ /foo/;
+
+C<m/pattern/msixpogc> searches a string for a pattern match,
+applying the given options.
+
+ m Multiline mode - ^ and $ match internal lines
+ s match as a Single line - . matches \n
+ i case-Insensitive
+ x eXtended legibility - free whitespace and comments
+ p Preserve a copy of the matched string -
+ ${^PREMATCH}, ${^MATCH}, ${^POSTMATCH} will be defined.
+ o compile pattern Once
+ g Global - all occurrences
+ c don't reset pos on failed matches when using /g
+
+If 'pattern' is an empty string, the last I<successfully> matched
+regex is used. Delimiters other than '/' may be used for both this
+operator and the following ones. The leading C<m> can be omitted
+if the delimiter is '/'.
+
+C<qr/pattern/msixpo> lets you store a regex in a variable,
+or pass one around. Modifiers as for C<m//>, and are stored
+within the regex.
+
+C<s/pattern/replacement/msixpogce> substitutes matches of
+'pattern' with 'replacement'. Modifiers as for C<m//>,
+with one addition:
+
+ e Evaluate 'replacement' as an expression
+
+'e' may be specified multiple times. 'replacement' is interpreted
+as a double quoted string unless a single-quote (C<'>) is the delimiter.
+
+C<?pattern?> is like C<m/pattern/> but matches only once. No alternate
+delimiters can be used. Must be reset with reset().
+
+=head2 SYNTAX
+
+ \ Escapes the character immediately following it
+ . Matches any single character except a newline (unless /s is used)
+ ^ Matches at the beginning of the string (or line, if /m is used)
+ $ Matches at the end of the string (or line, if /m is used)
+ * Matches the preceding element 0 or more times
+ + Matches the preceding element 1 or more times
+ ? Matches the preceding element 0 or 1 times
+ {...} Specifies a range of occurrences for the element preceding it
+ [...] Matches any one of the characters contained within the brackets
+ (...) Groups subexpressions for capturing to $1, $2...
+ (?:...) Groups subexpressions without capturing (cluster)
+ | Matches either the subexpression preceding or following it
+ \1, \2, \3 ... Matches the text from the Nth group
+ \g1 or \g{1}, \g2 ... Matches the text from the Nth group
+ \g-1 or \g{-1}, \g-2 ... Matches the text from the Nth previous group
+ \g{name} Named backreference
+ \k<name> Named backreference
+ \k'name' Named backreference
+ (?P=name) Named backreference (python syntax)
+
+=head2 ESCAPE SEQUENCES
+
+These work as in normal strings.
+
+ \a Alarm (beep)
+ \e Escape
+ \f Formfeed
+ \n Newline
+ \r Carriage return
+ \t Tab
+ \037 Any octal ASCII value
+ \x7f Any hexadecimal ASCII value
+ \x{263a} A wide hexadecimal value
+ \cx Control-x
+ \N{name} A named character
+
+ \l Lowercase next character
+ \u Titlecase next character
+ \L Lowercase until \E
+ \U Uppercase until \E
+ \Q Disable pattern metacharacters until \E
+ \E End modification
+
+For Titlecase, see L</Titlecase>.
+
+This one works differently from normal strings:
+
+ \b An assertion, not backspace, except in a character class
+
+=head2 CHARACTER CLASSES
+
+ [amy] Match 'a', 'm' or 'y'
+ [f-j] Dash specifies "range"
+ [f-j-] Dash escaped or at start or end means 'dash'
+ [^f-j] Caret indicates "match any character _except_ these"
+
+The following sequences work within or without a character class.
+The first six are locale aware, all are Unicode aware. See L<perllocale>
+and L<perlunicode> for details.
+
+ \d A digit
+ \D A nondigit
+ \w A word character
+ \W A non-word character
+ \s A whitespace character
+ \S A non-whitespace character
+ \h An horizontal white space
+ \H A non horizontal white space
+ \v A vertical white space
+ \V A non vertical white space
+ \R A generic newline (?>\v|\x0D\x0A)
+
+ \C Match a byte (with Unicode, '.' matches a character)
+ \pP Match P-named (Unicode) property
+ \p{...} Match Unicode property with long name
+ \PP Match non-P
+ \P{...} Match lack of Unicode property with long name
+ \X Match extended Unicode combining character sequence
+
+POSIX character classes and their Unicode and Perl equivalents:
+
+ alnum IsAlnum Alphanumeric
+ alpha IsAlpha Alphabetic
+ ascii IsASCII Any ASCII char
+ blank IsSpace [ \t] Horizontal whitespace (GNU extension)
+ cntrl IsCntrl Control characters
+ digit IsDigit \d Digits
+ graph IsGraph Alphanumeric and punctuation
+ lower IsLower Lowercase chars (locale and Unicode aware)
+ print IsPrint Alphanumeric, punct, and space
+ punct IsPunct Punctuation
+ space IsSpace [\s\ck] Whitespace
+ IsSpacePerl \s Perl's whitespace definition
+ upper IsUpper Uppercase chars (locale and Unicode aware)
+ word IsWord \w Alphanumeric plus _ (Perl extension)
+ xdigit IsXDigit [0-9A-Fa-f] Hexadecimal digit
+
+Within a character class:
+
+ POSIX traditional Unicode
+ [:digit:] \d \p{IsDigit}
+ [:^digit:] \D \P{IsDigit}
+
+=head2 ANCHORS
+
+All are zero-width assertions.
+
+ ^ Match string start (or line, if /m is used)
+ $ Match string end (or line, if /m is used) or before newline
+ \b Match word boundary (between \w and \W)
+ \B Match except at word boundary (between \w and \w or \W and \W)
+ \A Match string start (regardless of /m)
+ \Z Match string end (before optional newline)
+ \z Match absolute string end
+ \G Match where previous m//g left off
+
+ \K Keep the stuff left of the \K, don't include it in $&
+
+=head2 QUANTIFIERS
+
+Quantifiers are greedy by default -- match the B<longest> leftmost.
+
+ Maximal Minimal Possessive Allowed range
+ ------- ------- ---------- -------------
+ {n,m} {n,m}? {n,m}+ Must occur at least n times
+ but no more than m times
+ {n,} {n,}? {n,}+ Must occur at least n times
+ {n} {n}? {n}+ Must occur exactly n times
+ * *? *+ 0 or more times (same as {0,})
+ + +? ++ 1 or more times (same as {1,})
+ ? ?? ?+ 0 or 1 time (same as {0,1})
+
+The possessive forms (new in Perl 5.10) prevent backtracking: what gets
+matched by a pattern with a possessive quantifier will not be backtracked
+into, even if that causes the whole match to fail.
+
+There is no quantifier {,n} -- that gets understood as a literal string.
+
+=head2 EXTENDED CONSTRUCTS
+
+ (?#text) A comment
+ (?:...) Groups subexpressions without capturing (cluster)
+ (?pimsx-imsx:...) Enable/disable option (as per m// modifiers)
+ (?=...) Zero-width positive lookahead assertion
+ (?!...) Zero-width negative lookahead assertion
+ (?<=...) Zero-width positive lookbehind assertion
+ (?<!...) Zero-width negative lookbehind assertion
+ (?>...) Grab what we can, prohibit backtracking
+ (?|...) Branch reset
+ (?<name>...) Named capture
+ (?'name'...) Named capture
+ (?P<name>...) Named capture (python syntax)
+ (?{ code }) Embedded code, return value becomes $^R
+ (??{ code }) Dynamic regex, return value used as regex
+ (?N) Recurse into subpattern number N
+ (?-N), (?+N) Recurse into Nth previous/next subpattern
+ (?R), (?0) Recurse at the beginning of the whole pattern
+ (?&name) Recurse into a named subpattern
+ (?P>name) Recurse into a named subpattern (python syntax)
+ (?(cond)yes|no)
+ (?(cond)yes) Conditional expression, where "cond" can be:
+ (N) subpattern N has matched something
+ (<name>) named subpattern has matched something
+ ('name') named subpattern has matched something
+ (?{code}) code condition
+ (R) true if recursing
+ (RN) true if recursing into Nth subpattern
+ (R&name) true if recursing into named subpattern
+ (DEFINE) always false, no no-pattern allowed
+
+=head2 VARIABLES
+
+ $_ Default variable for operators to use
+
+ $` Everything prior to matched string
+ $& Entire matched string
+ $' Everything after to matched string
+
+ ${^PREMATCH} Everything prior to matched string
+ ${^MATCH} Entire matched string
+ ${^POSTMATCH} Everything after to matched string
+
+The use of C<$`>, C<$&> or C<$'> will slow down B<all> regex use
+within your program. Consult L<perlvar> for C<@->
+to see equivalent expressions that won't cause slow down.
+See also L<Devel::SawAmpersand>. Starting with Perl 5.10, you
+can also use the equivalent variables C<${^PREMATCH}>, C<${^MATCH}>
+and C<${^POSTMATCH}>, but for them to be defined, you have to
+specify the C</p> (preserve) modifier on your regular expression.
+
+ $1, $2 ... hold the Xth captured expr
+ $+ Last parenthesized pattern match
+ $^N Holds the most recently closed capture
+ $^R Holds the result of the last (?{...}) expr
+ @- Offsets of starts of groups. $-[0] holds start of whole match
+ @+ Offsets of ends of groups. $+[0] holds end of whole match
+ %+ Named capture buffers
+ %- Named capture buffers, as array refs
+
+Captured groups are numbered according to their I<opening> paren.
+
+=head2 FUNCTIONS
+
+ lc Lowercase a string
+ lcfirst Lowercase first char of a string
+ uc Uppercase a string
+ ucfirst Titlecase first char of a string
+
+ pos Return or set current match position
+ quotemeta Quote metacharacters
+ reset Reset ?pattern? status
+ study Analyze string for optimizing matching
+
+ split Use a regex to split a string into parts
+
+The first four of these are like the escape sequences C<\L>, C<\l>,
+C<\U>, and C<\u>. For Titlecase, see L</Titlecase>.
+
+=head2 TERMINOLOGY
+
+=head3 Titlecase
+
+Unicode concept which most often is equal to uppercase, but for
+certain characters like the German "sharp s" there is a difference.
+
+=head1 AUTHOR
+
+Iain Truskett. Updated by the Perl 5 Porters.
+
+This document may be distributed under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+=over 4
+
+=item *
+
+L<perlretut> for a tutorial on regular expressions.
+
+=item *
+
+L<perlrequick> for a rapid tutorial.
+
+=item *
+
+L<perlre> for more details.
+
+=item *
+
+L<perlvar> for details on the variables.
+
+=item *
+
+L<perlop> for details on the operators.
+
+=item *
+
+L<perlfunc> for details on the functions.
+
+=item *
+
+L<perlfaq6> for FAQs on regular expressions.
+
+=item *
+
+L<perlrebackslash> for a reference on backslash sequences.
+
+=item *
+
+L<perlrecharclass> for a reference on character classes.
+
+=item *
+
+The L<re> module to alter behaviour and aid
+debugging.
+
+=item *
+
+L<perldebug/"Debugging regular expressions">
+
+=item *
+
+L<perluniintro>, L<perlunicode>, L<charnames> and L<perllocale>
+for details on regexes and internationalisation.
+
+=item *
+
+I<Mastering Regular Expressions> by Jeffrey Friedl
+(F<http://regex.info/>) for a thorough grounding and
+reference on the topic.
+
+=back
+
+=head1 THANKS
+
+David P.C. Wollmann,
+Richard Soderberg,
+Sean M. Burke,
+Tom Christiansen,
+Jim Cromie,
+and
+Jeffrey Goff
+for useful advice.
+
+=cut