tools/pcre/doc/pcresyntax.3
author Nicholas Hastings <skamonkey@gmail.com>
Sun Jul 15 12:31:06 2012 -0400 (2012-07-15)
changeset 3579 6d730190a3e4
parent 2762 d2d467bf1b5a
child 3831 babd0eee3c5e
permissions -rw-r--r--
Added missing files to each core and logic makefiles (NPOTB).
dvander@2762
     1
.TH PCRESYNTAX 3
dvander@2762
     2
.SH NAME
dvander@2762
     3
PCRE - Perl-compatible regular expressions
dvander@2762
     4
.SH "PCRE REGULAR EXPRESSION SYNTAX SUMMARY"
dvander@2762
     5
.rs
dvander@2762
     6
.sp
dvander@2762
     7
The full syntax and semantics of the regular expressions that are supported by
dvander@2762
     8
PCRE are described in the
dvander@2762
     9
.\" HREF
dvander@2762
    10
\fBpcrepattern\fP
dvander@2762
    11
.\"
dvander@2762
    12
documentation. This document contains just a quick-reference summary of the
dvander@2762
    13
syntax.
dvander@2762
    14
.
dvander@2762
    15
.
dvander@2762
    16
.SH "QUOTING"
dvander@2762
    17
.rs
dvander@2762
    18
.sp
dvander@2762
    19
  \ex         where x is non-alphanumeric is a literal x
dvander@2762
    20
  \eQ...\eE    treat enclosed characters as literal
dvander@2762
    21
.
dvander@2762
    22
.
dvander@2762
    23
.SH "CHARACTERS"
dvander@2762
    24
.rs
dvander@2762
    25
.sp
dvander@2762
    26
  \ea         alarm, that is, the BEL character (hex 07)
dvander@2762
    27
  \ecx        "control-x", where x is any character
dvander@2762
    28
  \ee         escape (hex 1B)
dvander@2762
    29
  \ef         formfeed (hex 0C)
dvander@2762
    30
  \en         newline (hex 0A)
dvander@2762
    31
  \er         carriage return (hex 0D)
dvander@2762
    32
  \et         tab (hex 09)
dvander@2762
    33
  \eddd       character with octal code ddd, or backreference
dvander@2762
    34
  \exhh       character with hex code hh
dvander@2762
    35
  \ex{hhh..}  character with hex code hhh..
dvander@2762
    36
.
dvander@2762
    37
.
dvander@2762
    38
.SH "CHARACTER TYPES"
dvander@2762
    39
.rs
dvander@2762
    40
.sp
dvander@2762
    41
  .          any character except newline;
dvander@2762
    42
               in dotall mode, any character whatsoever
dvander@2762
    43
  \eC         one byte, even in UTF-8 mode (best avoided)
dvander@2762
    44
  \ed         a decimal digit
dvander@2762
    45
  \eD         a character that is not a decimal digit
dvander@2762
    46
  \eh         a horizontal whitespace character
dvander@2762
    47
  \eH         a character that is not a horizontal whitespace character
dvander@2762
    48
  \ep{\fIxx\fP}     a character with the \fIxx\fP property
dvander@2762
    49
  \eP{\fIxx\fP}     a character without the \fIxx\fP property
dvander@2762
    50
  \eR         a newline sequence
dvander@2762
    51
  \es         a whitespace character
dvander@2762
    52
  \eS         a character that is not a whitespace character
dvander@2762
    53
  \ev         a vertical whitespace character
dvander@2762
    54
  \eV         a character that is not a vertical whitespace character
dvander@2762
    55
  \ew         a "word" character
dvander@2762
    56
  \eW         a "non-word" character
dvander@2762
    57
  \eX         an extended Unicode sequence
dvander@2762
    58
.sp
dvander@2762
    59
In PCRE, \ed, \eD, \es, \eS, \ew, and \eW recognize only ASCII characters.
dvander@2762
    60
.
dvander@2762
    61
.
dvander@2762
    62
.SH "GENERAL CATEGORY PROPERTY CODES FOR \ep and \eP"
dvander@2762
    63
.rs
dvander@2762
    64
.sp
dvander@2762
    65
  C          Other
dvander@2762
    66
  Cc         Control
dvander@2762
    67
  Cf         Format
dvander@2762
    68
  Cn         Unassigned
dvander@2762
    69
  Co         Private use
dvander@2762
    70
  Cs         Surrogate
dvander@2762
    71
.sp
dvander@2762
    72
  L          Letter
dvander@2762
    73
  Ll         Lower case letter
dvander@2762
    74
  Lm         Modifier letter
dvander@2762
    75
  Lo         Other letter
dvander@2762
    76
  Lt         Title case letter
dvander@2762
    77
  Lu         Upper case letter
dvander@2762
    78
  L&         Ll, Lu, or Lt
dvander@2762
    79
.sp
dvander@2762
    80
  M          Mark
dvander@2762
    81
  Mc         Spacing mark
dvander@2762
    82
  Me         Enclosing mark
dvander@2762
    83
  Mn         Non-spacing mark
dvander@2762
    84
.sp
dvander@2762
    85
  N          Number
dvander@2762
    86
  Nd         Decimal number
dvander@2762
    87
  Nl         Letter number
dvander@2762
    88
  No         Other number
dvander@2762
    89
.sp
dvander@2762
    90
  P          Punctuation
dvander@2762
    91
  Pc         Connector punctuation
dvander@2762
    92
  Pd         Dash punctuation
dvander@2762
    93
  Pe         Close punctuation
dvander@2762
    94
  Pf         Final punctuation
dvander@2762
    95
  Pi         Initial punctuation
dvander@2762
    96
  Po         Other punctuation
dvander@2762
    97
  Ps         Open punctuation
dvander@2762
    98
.sp
dvander@2762
    99
  S          Symbol
dvander@2762
   100
  Sc         Currency symbol
dvander@2762
   101
  Sk         Modifier symbol
dvander@2762
   102
  Sm         Mathematical symbol
dvander@2762
   103
  So         Other symbol
dvander@2762
   104
.sp
dvander@2762
   105
  Z          Separator
dvander@2762
   106
  Zl         Line separator
dvander@2762
   107
  Zp         Paragraph separator
dvander@2762
   108
  Zs         Space separator
dvander@2762
   109
.
dvander@2762
   110
.
dvander@2762
   111
.SH "SCRIPT NAMES FOR \ep AND \eP"
dvander@2762
   112
.rs
dvander@2762
   113
.sp
dvander@2762
   114
Arabic,
dvander@2762
   115
Armenian,
dvander@2762
   116
Balinese,
dvander@2762
   117
Bengali,
dvander@2762
   118
Bopomofo,
dvander@2762
   119
Braille,
dvander@2762
   120
Buginese,
dvander@2762
   121
Buhid,
dvander@2762
   122
Canadian_Aboriginal,
dvander@2762
   123
Carian,
dvander@2762
   124
Cham,
dvander@2762
   125
Cherokee,
dvander@2762
   126
Common,
dvander@2762
   127
Coptic,
dvander@2762
   128
Cuneiform,
dvander@2762
   129
Cypriot,
dvander@2762
   130
Cyrillic,
dvander@2762
   131
Deseret,
dvander@2762
   132
Devanagari,
dvander@2762
   133
Ethiopic,
dvander@2762
   134
Georgian,
dvander@2762
   135
Glagolitic,
dvander@2762
   136
Gothic,
dvander@2762
   137
Greek,
dvander@2762
   138
Gujarati,
dvander@2762
   139
Gurmukhi,
dvander@2762
   140
Han,
dvander@2762
   141
Hangul,
dvander@2762
   142
Hanunoo,
dvander@2762
   143
Hebrew,
dvander@2762
   144
Hiragana,
dvander@2762
   145
Inherited,
dvander@2762
   146
Kannada,
dvander@2762
   147
Katakana,
dvander@2762
   148
Kayah_Li,
dvander@2762
   149
Kharoshthi,
dvander@2762
   150
Khmer,
dvander@2762
   151
Lao,
dvander@2762
   152
Latin,
dvander@2762
   153
Lepcha,
dvander@2762
   154
Limbu,
dvander@2762
   155
Linear_B,
dvander@2762
   156
Lycian,
dvander@2762
   157
Lydian,
dvander@2762
   158
Malayalam,
dvander@2762
   159
Mongolian,
dvander@2762
   160
Myanmar,
dvander@2762
   161
New_Tai_Lue,
dvander@2762
   162
Nko,
dvander@2762
   163
Ogham,
dvander@2762
   164
Old_Italic,
dvander@2762
   165
Old_Persian,
dvander@2762
   166
Ol_Chiki,
dvander@2762
   167
Oriya,
dvander@2762
   168
Osmanya,
dvander@2762
   169
Phags_Pa,
dvander@2762
   170
Phoenician,
dvander@2762
   171
Rejang,
dvander@2762
   172
Runic,
dvander@2762
   173
Saurashtra,
dvander@2762
   174
Shavian,
dvander@2762
   175
Sinhala,
dvander@2762
   176
Sudanese,
dvander@2762
   177
Syloti_Nagri,
dvander@2762
   178
Syriac,
dvander@2762
   179
Tagalog,
dvander@2762
   180
Tagbanwa,
dvander@2762
   181
Tai_Le,
dvander@2762
   182
Tamil,
dvander@2762
   183
Telugu,
dvander@2762
   184
Thaana,
dvander@2762
   185
Thai,
dvander@2762
   186
Tibetan,
dvander@2762
   187
Tifinagh,
dvander@2762
   188
Ugaritic,
dvander@2762
   189
Vai,
dvander@2762
   190
Yi.
dvander@2762
   191
.
dvander@2762
   192
.
dvander@2762
   193
.SH "CHARACTER CLASSES"
dvander@2762
   194
.rs
dvander@2762
   195
.sp
dvander@2762
   196
  [...]       positive character class
dvander@2762
   197
  [^...]      negative character class
dvander@2762
   198
  [x-y]       range (can be used for hex characters)
dvander@2762
   199
  [[:xxx:]]   positive POSIX named set
dvander@2762
   200
  [[:^xxx:]]  negative POSIX named set
dvander@2762
   201
.sp
dvander@2762
   202
  alnum       alphanumeric
dvander@2762
   203
  alpha       alphabetic
dvander@2762
   204
  ascii       0-127
dvander@2762
   205
  blank       space or tab
dvander@2762
   206
  cntrl       control character
dvander@2762
   207
  digit       decimal digit
dvander@2762
   208
  graph       printing, excluding space
dvander@2762
   209
  lower       lower case letter
dvander@2762
   210
  print       printing, including space
dvander@2762
   211
  punct       printing, excluding alphanumeric
dvander@2762
   212
  space       whitespace
dvander@2762
   213
  upper       upper case letter
dvander@2762
   214
  word        same as \ew
dvander@2762
   215
  xdigit      hexadecimal digit
dvander@2762
   216
.sp
dvander@2762
   217
In PCRE, POSIX character set names recognize only ASCII characters. You can use
dvander@2762
   218
\eQ...\eE inside a character class.
dvander@2762
   219
.
dvander@2762
   220
.
dvander@2762
   221
.SH "QUANTIFIERS"
dvander@2762
   222
.rs
dvander@2762
   223
.sp
dvander@2762
   224
  ?           0 or 1, greedy
dvander@2762
   225
  ?+          0 or 1, possessive
dvander@2762
   226
  ??          0 or 1, lazy
dvander@2762
   227
  *           0 or more, greedy
dvander@2762
   228
  *+          0 or more, possessive
dvander@2762
   229
  *?          0 or more, lazy
dvander@2762
   230
  +           1 or more, greedy
dvander@2762
   231
  ++          1 or more, possessive
dvander@2762
   232
  +?          1 or more, lazy
dvander@2762
   233
  {n}         exactly n
dvander@2762
   234
  {n,m}       at least n, no more than m, greedy
dvander@2762
   235
  {n,m}+      at least n, no more than m, possessive
dvander@2762
   236
  {n,m}?      at least n, no more than m, lazy
dvander@2762
   237
  {n,}        n or more, greedy
dvander@2762
   238
  {n,}+       n or more, possessive
dvander@2762
   239
  {n,}?       n or more, lazy
dvander@2762
   240
.
dvander@2762
   241
.
dvander@2762
   242
.SH "ANCHORS AND SIMPLE ASSERTIONS"
dvander@2762
   243
.rs
dvander@2762
   244
.sp
dvander@2762
   245
  \eb          word boundary (only ASCII letters recognized)
dvander@2762
   246
  \eB          not a word boundary
dvander@2762
   247
  ^           start of subject
dvander@2762
   248
               also after internal newline in multiline mode
dvander@2762
   249
  \eA          start of subject
dvander@2762
   250
  $           end of subject
dvander@2762
   251
               also before newline at end of subject
dvander@2762
   252
               also before internal newline in multiline mode
dvander@2762
   253
  \eZ          end of subject
dvander@2762
   254
               also before newline at end of subject
dvander@2762
   255
  \ez          end of subject
dvander@2762
   256
  \eG          first matching position in subject
dvander@2762
   257
.
dvander@2762
   258
.
dvander@2762
   259
.SH "MATCH POINT RESET"
dvander@2762
   260
.rs
dvander@2762
   261
.sp
dvander@2762
   262
  \eK          reset start of match
dvander@2762
   263
.
dvander@2762
   264
.
dvander@2762
   265
.SH "ALTERNATION"
dvander@2762
   266
.rs
dvander@2762
   267
.sp
dvander@2762
   268
  expr|expr|expr...
dvander@2762
   269
.
dvander@2762
   270
.
dvander@2762
   271
.SH "CAPTURING"
dvander@2762
   272
.rs
dvander@2762
   273
.sp
dvander@2762
   274
  (...)           capturing group
dvander@2762
   275
  (?<name>...)    named capturing group (Perl)
dvander@2762
   276
  (?'name'...)    named capturing group (Perl)
dvander@2762
   277
  (?P<name>...)   named capturing group (Python)
dvander@2762
   278
  (?:...)         non-capturing group
dvander@2762
   279
  (?|...)         non-capturing group; reset group numbers for
dvander@2762
   280
                   capturing groups in each alternative
dvander@2762
   281
.
dvander@2762
   282
.
dvander@2762
   283
.SH "ATOMIC GROUPS"
dvander@2762
   284
.rs
dvander@2762
   285
.sp
dvander@2762
   286
  (?>...)         atomic, non-capturing group
dvander@2762
   287
.
dvander@2762
   288
.
dvander@2762
   289
.
dvander@2762
   290
.
dvander@2762
   291
.SH "COMMENT"
dvander@2762
   292
.rs
dvander@2762
   293
.sp
dvander@2762
   294
  (?#....)        comment (not nestable)
dvander@2762
   295
.
dvander@2762
   296
.
dvander@2762
   297
.SH "OPTION SETTING"
dvander@2762
   298
.rs
dvander@2762
   299
.sp
dvander@2762
   300
  (?i)            caseless
dvander@2762
   301
  (?J)            allow duplicate names
dvander@2762
   302
  (?m)            multiline
dvander@2762
   303
  (?s)            single line (dotall)
dvander@2762
   304
  (?U)            default ungreedy (lazy)
dvander@2762
   305
  (?x)            extended (ignore white space)
dvander@2762
   306
  (?-...)         unset option(s)
dvander@2762
   307
.sp
dvander@2762
   308
The following is recognized only at the start of a pattern or after one of the
dvander@2762
   309
newline-setting options with similar syntax:
dvander@2762
   310
.sp
dvander@2762
   311
  (*UTF8)         set UTF-8 mode
dvander@2762
   312
.
dvander@2762
   313
.
dvander@2762
   314
.SH "LOOKAHEAD AND LOOKBEHIND ASSERTIONS"
dvander@2762
   315
.rs
dvander@2762
   316
.sp
dvander@2762
   317
  (?=...)         positive look ahead
dvander@2762
   318
  (?!...)         negative look ahead
dvander@2762
   319
  (?<=...)        positive look behind
dvander@2762
   320
  (?<!...)        negative look behind
dvander@2762
   321
.sp
dvander@2762
   322
Each top-level branch of a look behind must be of a fixed length.
dvander@2762
   323
.
dvander@2762
   324
.
dvander@2762
   325
.SH "BACKREFERENCES"
dvander@2762
   326
.rs
dvander@2762
   327
.sp
dvander@2762
   328
  \en              reference by number (can be ambiguous)
dvander@2762
   329
  \egn             reference by number
dvander@2762
   330
  \eg{n}           reference by number
dvander@2762
   331
  \eg{-n}          relative reference by number
dvander@2762
   332
  \ek<name>        reference by name (Perl)
dvander@2762
   333
  \ek'name'        reference by name (Perl)
dvander@2762
   334
  \eg{name}        reference by name (Perl)
dvander@2762
   335
  \ek{name}        reference by name (.NET)
dvander@2762
   336
  (?P=name)       reference by name (Python)
dvander@2762
   337
.
dvander@2762
   338
.
dvander@2762
   339
.SH "SUBROUTINE REFERENCES (POSSIBLY RECURSIVE)"
dvander@2762
   340
.rs
dvander@2762
   341
.sp
dvander@2762
   342
  (?R)            recurse whole pattern
dvander@2762
   343
  (?n)            call subpattern by absolute number
dvander@2762
   344
  (?+n)           call subpattern by relative number
dvander@2762
   345
  (?-n)           call subpattern by relative number
dvander@2762
   346
  (?&name)        call subpattern by name (Perl)
dvander@2762
   347
  (?P>name)       call subpattern by name (Python)
dvander@2762
   348
  \eg<name>        call subpattern by name (Oniguruma)
dvander@2762
   349
  \eg'name'        call subpattern by name (Oniguruma)
dvander@2762
   350
  \eg<n>           call subpattern by absolute number (Oniguruma)
dvander@2762
   351
  \eg'n'           call subpattern by absolute number (Oniguruma)
dvander@2762
   352
  \eg<+n>          call subpattern by relative number (PCRE extension)
dvander@2762
   353
  \eg'+n'          call subpattern by relative number (PCRE extension)
dvander@2762
   354
  \eg<-n>          call subpattern by relative number (PCRE extension)
dvander@2762
   355
  \eg'-n'          call subpattern by relative number (PCRE extension)
dvander@2762
   356
.
dvander@2762
   357
.
dvander@2762
   358
.SH "CONDITIONAL PATTERNS"
dvander@2762
   359
.rs
dvander@2762
   360
.sp
dvander@2762
   361
  (?(condition)yes-pattern)
dvander@2762
   362
  (?(condition)yes-pattern|no-pattern)
dvander@2762
   363
.sp
dvander@2762
   364
  (?(n)...        absolute reference condition
dvander@2762
   365
  (?(+n)...       relative reference condition
dvander@2762
   366
  (?(-n)...       relative reference condition
dvander@2762
   367
  (?(<name>)...   named reference condition (Perl)
dvander@2762
   368
  (?('name')...   named reference condition (Perl)
dvander@2762
   369
  (?(name)...     named reference condition (PCRE)
dvander@2762
   370
  (?(R)...        overall recursion condition
dvander@2762
   371
  (?(Rn)...       specific group recursion condition
dvander@2762
   372
  (?(R&name)...   specific recursion condition
dvander@2762
   373
  (?(DEFINE)...   define subpattern for reference
dvander@2762
   374
  (?(assert)...   assertion condition
dvander@2762
   375
.
dvander@2762
   376
.
dvander@2762
   377
.SH "BACKTRACKING CONTROL"
dvander@2762
   378
.rs
dvander@2762
   379
.sp
dvander@2762
   380
The following act immediately they are reached:
dvander@2762
   381
.sp
dvander@2762
   382
  (*ACCEPT)       force successful match
dvander@2762
   383
  (*FAIL)         force backtrack; synonym (*F)
dvander@2762
   384
.sp
dvander@2762
   385
The following act only when a subsequent match failure causes a backtrack to
dvander@2762
   386
reach them. They all force a match failure, but they differ in what happens
dvander@2762
   387
afterwards. Those that advance the start-of-match point do so only if the
dvander@2762
   388
pattern is not anchored.
dvander@2762
   389
.sp
dvander@2762
   390
  (*COMMIT)       overall failure, no advance of starting point
dvander@2762
   391
  (*PRUNE)        advance to next starting character
dvander@2762
   392
  (*SKIP)         advance start to current matching position
dvander@2762
   393
  (*THEN)         local failure, backtrack to next alternation
dvander@2762
   394
.
dvander@2762
   395
.
dvander@2762
   396
.SH "NEWLINE CONVENTIONS"
dvander@2762
   397
.rs
dvander@2762
   398
.sp
dvander@2762
   399
These are recognized only at the very start of the pattern or after a
dvander@2762
   400
(*BSR_...) or (*UTF8) option.
dvander@2762
   401
.sp
dvander@2762
   402
  (*CR)           carriage return only
dvander@2762
   403
  (*LF)           linefeed only
dvander@2762
   404
  (*CRLF)         carriage return followed by linefeed
dvander@2762
   405
  (*ANYCRLF)      all three of the above
dvander@2762
   406
  (*ANY)          any Unicode newline sequence
dvander@2762
   407
.
dvander@2762
   408
.
dvander@2762
   409
.SH "WHAT \eR MATCHES"
dvander@2762
   410
.rs
dvander@2762
   411
.sp
dvander@2762
   412
These are recognized only at the very start of the pattern or after a
dvander@2762
   413
(*...) option that sets the newline convention or UTF-8 mode.
dvander@2762
   414
.sp
dvander@2762
   415
  (*BSR_ANYCRLF)  CR, LF, or CRLF
dvander@2762
   416
  (*BSR_UNICODE)  any Unicode newline sequence
dvander@2762
   417
.
dvander@2762
   418
.
dvander@2762
   419
.SH "CALLOUTS"
dvander@2762
   420
.rs
dvander@2762
   421
.sp
dvander@2762
   422
  (?C)      callout
dvander@2762
   423
  (?Cn)     callout with data n
dvander@2762
   424
.
dvander@2762
   425
.
dvander@2762
   426
.SH "SEE ALSO"
dvander@2762
   427
.rs
dvander@2762
   428
.sp
dvander@2762
   429
\fBpcrepattern\fP(3), \fBpcreapi\fP(3), \fBpcrecallout\fP(3),
dvander@2762
   430
\fBpcrematching\fP(3), \fBpcre\fP(3).
dvander@2762
   431
.
dvander@2762
   432
.
dvander@2762
   433
.SH AUTHOR
dvander@2762
   434
.rs
dvander@2762
   435
.sp
dvander@2762
   436
.nf
dvander@2762
   437
Philip Hazel
dvander@2762
   438
University Computing Service
dvander@2762
   439
Cambridge CB2 3QH, England.
dvander@2762
   440
.fi
dvander@2762
   441
.
dvander@2762
   442
.
dvander@2762
   443
.SH REVISION
dvander@2762
   444
.rs
dvander@2762
   445
.sp
dvander@2762
   446
.nf
dvander@2762
   447
Last updated: 11 April 2009
dvander@2762
   448
Copyright (c) 1997-2009 University of Cambridge.
dvander@2762
   449
.fi