522 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			522 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <html>
 | |
| <head>
 | |
| <title>pcresyntax specification</title>
 | |
| </head>
 | |
| <body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
 | |
| <h1>pcresyntax man page</h1>
 | |
| <p>
 | |
| Return to the <a href="index.html">PCRE index page</a>.
 | |
| </p>
 | |
| <p>
 | |
| This page is part of the PCRE HTML documentation. It was generated automatically
 | |
| from the original man page. If there is any nonsense in it, please consult the
 | |
| man page, in case the conversion went wrong.
 | |
| <br>
 | |
| <ul>
 | |
| <li><a name="TOC1" href="#SEC1">PCRE REGULAR EXPRESSION SYNTAX SUMMARY</a>
 | |
| <li><a name="TOC2" href="#SEC2">QUOTING</a>
 | |
| <li><a name="TOC3" href="#SEC3">CHARACTERS</a>
 | |
| <li><a name="TOC4" href="#SEC4">CHARACTER TYPES</a>
 | |
| <li><a name="TOC5" href="#SEC5">GENERAL CATEGORY PROPERTIES FOR \p and \P</a>
 | |
| <li><a name="TOC6" href="#SEC6">PCRE SPECIAL CATEGORY PROPERTIES FOR \p and \P</a>
 | |
| <li><a name="TOC7" href="#SEC7">SCRIPT NAMES FOR \p AND \P</a>
 | |
| <li><a name="TOC8" href="#SEC8">CHARACTER CLASSES</a>
 | |
| <li><a name="TOC9" href="#SEC9">QUANTIFIERS</a>
 | |
| <li><a name="TOC10" href="#SEC10">ANCHORS AND SIMPLE ASSERTIONS</a>
 | |
| <li><a name="TOC11" href="#SEC11">MATCH POINT RESET</a>
 | |
| <li><a name="TOC12" href="#SEC12">ALTERNATION</a>
 | |
| <li><a name="TOC13" href="#SEC13">CAPTURING</a>
 | |
| <li><a name="TOC14" href="#SEC14">ATOMIC GROUPS</a>
 | |
| <li><a name="TOC15" href="#SEC15">COMMENT</a>
 | |
| <li><a name="TOC16" href="#SEC16">OPTION SETTING</a>
 | |
| <li><a name="TOC17" href="#SEC17">LOOKAHEAD AND LOOKBEHIND ASSERTIONS</a>
 | |
| <li><a name="TOC18" href="#SEC18">BACKREFERENCES</a>
 | |
| <li><a name="TOC19" href="#SEC19">SUBROUTINE REFERENCES (POSSIBLY RECURSIVE)</a>
 | |
| <li><a name="TOC20" href="#SEC20">CONDITIONAL PATTERNS</a>
 | |
| <li><a name="TOC21" href="#SEC21">BACKTRACKING CONTROL</a>
 | |
| <li><a name="TOC22" href="#SEC22">NEWLINE CONVENTIONS</a>
 | |
| <li><a name="TOC23" href="#SEC23">WHAT \R MATCHES</a>
 | |
| <li><a name="TOC24" href="#SEC24">CALLOUTS</a>
 | |
| <li><a name="TOC25" href="#SEC25">SEE ALSO</a>
 | |
| <li><a name="TOC26" href="#SEC26">AUTHOR</a>
 | |
| <li><a name="TOC27" href="#SEC27">REVISION</a>
 | |
| </ul>
 | |
| <br><a name="SEC1" href="#TOC1">PCRE REGULAR EXPRESSION SYNTAX SUMMARY</a><br>
 | |
| <P>
 | |
| The full syntax and semantics of the regular expressions that are supported by
 | |
| PCRE are described in the
 | |
| <a href="pcrepattern.html"><b>pcrepattern</b></a>
 | |
| documentation. This document contains a quick-reference summary of the syntax.
 | |
| </P>
 | |
| <br><a name="SEC2" href="#TOC1">QUOTING</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   \x         where x is non-alphanumeric is a literal x
 | |
|   \Q...\E    treat enclosed characters as literal
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC3" href="#TOC1">CHARACTERS</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   \a         alarm, that is, the BEL character (hex 07)
 | |
|   \cx        "control-x", where x is any ASCII character
 | |
|   \e         escape (hex 1B)
 | |
|   \f         form feed (hex 0C)
 | |
|   \n         newline (hex 0A)
 | |
|   \r         carriage return (hex 0D)
 | |
|   \t         tab (hex 09)
 | |
|   \ddd       character with octal code ddd, or backreference
 | |
|   \xhh       character with hex code hh
 | |
|   \x{hhh..}  character with hex code hhh..
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC4" href="#TOC1">CHARACTER TYPES</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   .          any character except newline;
 | |
|                in dotall mode, any character whatsoever
 | |
|   \C         one data unit, even in UTF mode (best avoided)
 | |
|   \d         a decimal digit
 | |
|   \D         a character that is not a decimal digit
 | |
|   \h         a horizontal white space character
 | |
|   \H         a character that is not a horizontal white space character
 | |
|   \N         a character that is not a newline
 | |
|   \p{<i>xx</i>}     a character with the <i>xx</i> property
 | |
|   \P{<i>xx</i>}     a character without the <i>xx</i> property
 | |
|   \R         a newline sequence
 | |
|   \s         a white space character
 | |
|   \S         a character that is not a white space character
 | |
|   \v         a vertical white space character
 | |
|   \V         a character that is not a vertical white space character
 | |
|   \w         a "word" character
 | |
|   \W         a "non-word" character
 | |
|   \X         a Unicode extended grapheme cluster
 | |
| </pre>
 | |
| In PCRE, by default, \d, \D, \s, \S, \w, and \W recognize only ASCII
 | |
| characters, even in a UTF mode. However, this can be changed by setting the
 | |
| PCRE_UCP option.
 | |
| </P>
 | |
| <br><a name="SEC5" href="#TOC1">GENERAL CATEGORY PROPERTIES FOR \p and \P</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   C          Other
 | |
|   Cc         Control
 | |
|   Cf         Format
 | |
|   Cn         Unassigned
 | |
|   Co         Private use
 | |
|   Cs         Surrogate
 | |
| 
 | |
|   L          Letter
 | |
|   Ll         Lower case letter
 | |
|   Lm         Modifier letter
 | |
|   Lo         Other letter
 | |
|   Lt         Title case letter
 | |
|   Lu         Upper case letter
 | |
|   L&         Ll, Lu, or Lt
 | |
| 
 | |
|   M          Mark
 | |
|   Mc         Spacing mark
 | |
|   Me         Enclosing mark
 | |
|   Mn         Non-spacing mark
 | |
| 
 | |
|   N          Number
 | |
|   Nd         Decimal number
 | |
|   Nl         Letter number
 | |
|   No         Other number
 | |
| 
 | |
|   P          Punctuation
 | |
|   Pc         Connector punctuation
 | |
|   Pd         Dash punctuation
 | |
|   Pe         Close punctuation
 | |
|   Pf         Final punctuation
 | |
|   Pi         Initial punctuation
 | |
|   Po         Other punctuation
 | |
|   Ps         Open punctuation
 | |
| 
 | |
|   S          Symbol
 | |
|   Sc         Currency symbol
 | |
|   Sk         Modifier symbol
 | |
|   Sm         Mathematical symbol
 | |
|   So         Other symbol
 | |
| 
 | |
|   Z          Separator
 | |
|   Zl         Line separator
 | |
|   Zp         Paragraph separator
 | |
|   Zs         Space separator
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC6" href="#TOC1">PCRE SPECIAL CATEGORY PROPERTIES FOR \p and \P</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   Xan        Alphanumeric: union of properties L and N
 | |
|   Xps        POSIX space: property Z or tab, NL, VT, FF, CR
 | |
|   Xsp        Perl space: property Z or tab, NL, FF, CR
 | |
|   Xwd        Perl word: property Xan or underscore
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC7" href="#TOC1">SCRIPT NAMES FOR \p AND \P</a><br>
 | |
| <P>
 | |
| Arabic,
 | |
| Armenian,
 | |
| Avestan,
 | |
| Balinese,
 | |
| Bamum,
 | |
| Batak,
 | |
| Bengali,
 | |
| Bopomofo,
 | |
| Brahmi,
 | |
| Braille,
 | |
| Buginese,
 | |
| Buhid,
 | |
| Canadian_Aboriginal,
 | |
| Carian,
 | |
| Chakma,
 | |
| Cham,
 | |
| Cherokee,
 | |
| Common,
 | |
| Coptic,
 | |
| Cuneiform,
 | |
| Cypriot,
 | |
| Cyrillic,
 | |
| Deseret,
 | |
| Devanagari,
 | |
| Egyptian_Hieroglyphs,
 | |
| Ethiopic,
 | |
| Georgian,
 | |
| Glagolitic,
 | |
| Gothic,
 | |
| Greek,
 | |
| Gujarati,
 | |
| Gurmukhi,
 | |
| Han,
 | |
| Hangul,
 | |
| Hanunoo,
 | |
| Hebrew,
 | |
| Hiragana,
 | |
| Imperial_Aramaic,
 | |
| Inherited,
 | |
| Inscriptional_Pahlavi,
 | |
| Inscriptional_Parthian,
 | |
| Javanese,
 | |
| Kaithi,
 | |
| Kannada,
 | |
| Katakana,
 | |
| Kayah_Li,
 | |
| Kharoshthi,
 | |
| Khmer,
 | |
| Lao,
 | |
| Latin,
 | |
| Lepcha,
 | |
| Limbu,
 | |
| Linear_B,
 | |
| Lisu,
 | |
| Lycian,
 | |
| Lydian,
 | |
| Malayalam,
 | |
| Mandaic,
 | |
| Meetei_Mayek,
 | |
| Meroitic_Cursive,
 | |
| Meroitic_Hieroglyphs,
 | |
| Miao,
 | |
| Mongolian,
 | |
| Myanmar,
 | |
| New_Tai_Lue,
 | |
| Nko,
 | |
| Ogham,
 | |
| Old_Italic,
 | |
| Old_Persian,
 | |
| Old_South_Arabian,
 | |
| Old_Turkic,
 | |
| Ol_Chiki,
 | |
| Oriya,
 | |
| Osmanya,
 | |
| Phags_Pa,
 | |
| Phoenician,
 | |
| Rejang,
 | |
| Runic,
 | |
| Samaritan,
 | |
| Saurashtra,
 | |
| Sharada,
 | |
| Shavian,
 | |
| Sinhala,
 | |
| Sora_Sompeng,
 | |
| Sundanese,
 | |
| Syloti_Nagri,
 | |
| Syriac,
 | |
| Tagalog,
 | |
| Tagbanwa,
 | |
| Tai_Le,
 | |
| Tai_Tham,
 | |
| Tai_Viet,
 | |
| Takri,
 | |
| Tamil,
 | |
| Telugu,
 | |
| Thaana,
 | |
| Thai,
 | |
| Tibetan,
 | |
| Tifinagh,
 | |
| Ugaritic,
 | |
| Vai,
 | |
| Yi.
 | |
| </P>
 | |
| <br><a name="SEC8" href="#TOC1">CHARACTER CLASSES</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   [...]       positive character class
 | |
|   [^...]      negative character class
 | |
|   [x-y]       range (can be used for hex characters)
 | |
|   [[:xxx:]]   positive POSIX named set
 | |
|   [[:^xxx:]]  negative POSIX named set
 | |
| 
 | |
|   alnum       alphanumeric
 | |
|   alpha       alphabetic
 | |
|   ascii       0-127
 | |
|   blank       space or tab
 | |
|   cntrl       control character
 | |
|   digit       decimal digit
 | |
|   graph       printing, excluding space
 | |
|   lower       lower case letter
 | |
|   print       printing, including space
 | |
|   punct       printing, excluding alphanumeric
 | |
|   space       white space
 | |
|   upper       upper case letter
 | |
|   word        same as \w
 | |
|   xdigit      hexadecimal digit
 | |
| </pre>
 | |
| In PCRE, POSIX character set names recognize only ASCII characters by default,
 | |
| but some of them use Unicode properties if PCRE_UCP is set. You can use
 | |
| \Q...\E inside a character class.
 | |
| </P>
 | |
| <br><a name="SEC9" href="#TOC1">QUANTIFIERS</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   ?           0 or 1, greedy
 | |
|   ?+          0 or 1, possessive
 | |
|   ??          0 or 1, lazy
 | |
|   *           0 or more, greedy
 | |
|   *+          0 or more, possessive
 | |
|   *?          0 or more, lazy
 | |
|   +           1 or more, greedy
 | |
|   ++          1 or more, possessive
 | |
|   +?          1 or more, lazy
 | |
|   {n}         exactly n
 | |
|   {n,m}       at least n, no more than m, greedy
 | |
|   {n,m}+      at least n, no more than m, possessive
 | |
|   {n,m}?      at least n, no more than m, lazy
 | |
|   {n,}        n or more, greedy
 | |
|   {n,}+       n or more, possessive
 | |
|   {n,}?       n or more, lazy
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC10" href="#TOC1">ANCHORS AND SIMPLE ASSERTIONS</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   \b          word boundary
 | |
|   \B          not a word boundary
 | |
|   ^           start of subject
 | |
|                also after internal newline in multiline mode
 | |
|   \A          start of subject
 | |
|   $           end of subject
 | |
|                also before newline at end of subject
 | |
|                also before internal newline in multiline mode
 | |
|   \Z          end of subject
 | |
|                also before newline at end of subject
 | |
|   \z          end of subject
 | |
|   \G          first matching position in subject
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC11" href="#TOC1">MATCH POINT RESET</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   \K          reset start of match
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC12" href="#TOC1">ALTERNATION</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   expr|expr|expr...
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC13" href="#TOC1">CAPTURING</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   (...)           capturing group
 | |
|   (?<name>...)    named capturing group (Perl)
 | |
|   (?'name'...)    named capturing group (Perl)
 | |
|   (?P<name>...)   named capturing group (Python)
 | |
|   (?:...)         non-capturing group
 | |
|   (?|...)         non-capturing group; reset group numbers for
 | |
|                    capturing groups in each alternative
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC14" href="#TOC1">ATOMIC GROUPS</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   (?>...)         atomic, non-capturing group
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC15" href="#TOC1">COMMENT</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   (?#....)        comment (not nestable)
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC16" href="#TOC1">OPTION SETTING</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   (?i)            caseless
 | |
|   (?J)            allow duplicate names
 | |
|   (?m)            multiline
 | |
|   (?s)            single line (dotall)
 | |
|   (?U)            default ungreedy (lazy)
 | |
|   (?x)            extended (ignore white space)
 | |
|   (?-...)         unset option(s)
 | |
| </pre>
 | |
| The following are recognized only at the start of a pattern or after one of the
 | |
| newline-setting options with similar syntax:
 | |
| <pre>
 | |
|   (*NO_START_OPT) no start-match optimization (PCRE_NO_START_OPTIMIZE)
 | |
|   (*UTF8)         set UTF-8 mode: 8-bit library (PCRE_UTF8)
 | |
|   (*UTF16)        set UTF-16 mode: 16-bit library (PCRE_UTF16)
 | |
|   (*UTF32)        set UTF-32 mode: 32-bit library (PCRE_UTF32)
 | |
|   (*UTF)          set appropriate UTF mode for the library in use
 | |
|   (*UCP)          set PCRE_UCP (use Unicode properties for \d etc)
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC17" href="#TOC1">LOOKAHEAD AND LOOKBEHIND ASSERTIONS</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   (?=...)         positive look ahead
 | |
|   (?!...)         negative look ahead
 | |
|   (?<=...)        positive look behind
 | |
|   (?<!...)        negative look behind
 | |
| </pre>
 | |
| Each top-level branch of a look behind must be of a fixed length.
 | |
| </P>
 | |
| <br><a name="SEC18" href="#TOC1">BACKREFERENCES</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   \n              reference by number (can be ambiguous)
 | |
|   \gn             reference by number
 | |
|   \g{n}           reference by number
 | |
|   \g{-n}          relative reference by number
 | |
|   \k<name>        reference by name (Perl)
 | |
|   \k'name'        reference by name (Perl)
 | |
|   \g{name}        reference by name (Perl)
 | |
|   \k{name}        reference by name (.NET)
 | |
|   (?P=name)       reference by name (Python)
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC19" href="#TOC1">SUBROUTINE REFERENCES (POSSIBLY RECURSIVE)</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   (?R)            recurse whole pattern
 | |
|   (?n)            call subpattern by absolute number
 | |
|   (?+n)           call subpattern by relative number
 | |
|   (?-n)           call subpattern by relative number
 | |
|   (?&name)        call subpattern by name (Perl)
 | |
|   (?P>name)       call subpattern by name (Python)
 | |
|   \g<name>        call subpattern by name (Oniguruma)
 | |
|   \g'name'        call subpattern by name (Oniguruma)
 | |
|   \g<n>           call subpattern by absolute number (Oniguruma)
 | |
|   \g'n'           call subpattern by absolute number (Oniguruma)
 | |
|   \g<+n>          call subpattern by relative number (PCRE extension)
 | |
|   \g'+n'          call subpattern by relative number (PCRE extension)
 | |
|   \g<-n>          call subpattern by relative number (PCRE extension)
 | |
|   \g'-n'          call subpattern by relative number (PCRE extension)
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC20" href="#TOC1">CONDITIONAL PATTERNS</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   (?(condition)yes-pattern)
 | |
|   (?(condition)yes-pattern|no-pattern)
 | |
| 
 | |
|   (?(n)...        absolute reference condition
 | |
|   (?(+n)...       relative reference condition
 | |
|   (?(-n)...       relative reference condition
 | |
|   (?(<name>)...   named reference condition (Perl)
 | |
|   (?('name')...   named reference condition (Perl)
 | |
|   (?(name)...     named reference condition (PCRE)
 | |
|   (?(R)...        overall recursion condition
 | |
|   (?(Rn)...       specific group recursion condition
 | |
|   (?(R&name)...   specific recursion condition
 | |
|   (?(DEFINE)...   define subpattern for reference
 | |
|   (?(assert)...   assertion condition
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC21" href="#TOC1">BACKTRACKING CONTROL</a><br>
 | |
| <P>
 | |
| The following act immediately they are reached:
 | |
| <pre>
 | |
|   (*ACCEPT)       force successful match
 | |
|   (*FAIL)         force backtrack; synonym (*F)
 | |
|   (*MARK:NAME)    set name to be passed back; synonym (*:NAME)
 | |
| </pre>
 | |
| The following act only when a subsequent match failure causes a backtrack to
 | |
| reach them. They all force a match failure, but they differ in what happens
 | |
| afterwards. Those that advance the start-of-match point do so only if the
 | |
| pattern is not anchored.
 | |
| <pre>
 | |
|   (*COMMIT)       overall failure, no advance of starting point
 | |
|   (*PRUNE)        advance to next starting character
 | |
|   (*PRUNE:NAME)   equivalent to (*MARK:NAME)(*PRUNE)
 | |
|   (*SKIP)         advance to current matching position
 | |
|   (*SKIP:NAME)    advance to position corresponding to an earlier
 | |
|                   (*MARK:NAME); if not found, the (*SKIP) is ignored
 | |
|   (*THEN)         local failure, backtrack to next alternation
 | |
|   (*THEN:NAME)    equivalent to (*MARK:NAME)(*THEN)
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC22" href="#TOC1">NEWLINE CONVENTIONS</a><br>
 | |
| <P>
 | |
| These are recognized only at the very start of the pattern or after a
 | |
| (*BSR_...), (*UTF8), (*UTF16), (*UTF32) or (*UCP) option.
 | |
| <pre>
 | |
|   (*CR)           carriage return only
 | |
|   (*LF)           linefeed only
 | |
|   (*CRLF)         carriage return followed by linefeed
 | |
|   (*ANYCRLF)      all three of the above
 | |
|   (*ANY)          any Unicode newline sequence
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC23" href="#TOC1">WHAT \R MATCHES</a><br>
 | |
| <P>
 | |
| These are recognized only at the very start of the pattern or after a
 | |
| (*...) option that sets the newline convention or a UTF or UCP mode.
 | |
| <pre>
 | |
|   (*BSR_ANYCRLF)  CR, LF, or CRLF
 | |
|   (*BSR_UNICODE)  any Unicode newline sequence
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC24" href="#TOC1">CALLOUTS</a><br>
 | |
| <P>
 | |
| <pre>
 | |
|   (?C)      callout
 | |
|   (?Cn)     callout with data n
 | |
| </PRE>
 | |
| </P>
 | |
| <br><a name="SEC25" href="#TOC1">SEE ALSO</a><br>
 | |
| <P>
 | |
| <b>pcrepattern</b>(3), <b>pcreapi</b>(3), <b>pcrecallout</b>(3),
 | |
| <b>pcrematching</b>(3), <b>pcre</b>(3).
 | |
| </P>
 | |
| <br><a name="SEC26" href="#TOC1">AUTHOR</a><br>
 | |
| <P>
 | |
| Philip Hazel
 | |
| <br>
 | |
| University Computing Service
 | |
| <br>
 | |
| Cambridge CB2 3QH, England.
 | |
| <br>
 | |
| </P>
 | |
| <br><a name="SEC27" href="#TOC1">REVISION</a><br>
 | |
| <P>
 | |
| Last updated: 11 November 2012
 | |
| <br>
 | |
| Copyright © 1997-2012 University of Cambridge.
 | |
| <br>
 | |
| <p>
 | |
| Return to the <a href="index.html">PCRE index page</a>.
 | |
| </p>
 |