1<html> 2<head> 3<title>pcre2syntax specification</title> 4</head> 5<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB"> 6<h1>pcre2syntax man page</h1> 7<p> 8Return to the <a href="index.html">PCRE2 index page</a>. 9</p> 10<p> 11This page is part of the PCRE2 HTML documentation. It was generated 12automatically from the original man page. If there is any nonsense in it, 13please consult the man page, in case the conversion went wrong. 14<br> 15<ul> 16<li><a name="TOC1" href="#SEC1">PCRE2 REGULAR EXPRESSION SYNTAX SUMMARY</a> 17<li><a name="TOC2" href="#SEC2">QUOTING</a> 18<li><a name="TOC3" href="#SEC3">ESCAPED CHARACTERS</a> 19<li><a name="TOC4" href="#SEC4">CHARACTER TYPES</a> 20<li><a name="TOC5" href="#SEC5">GENERAL CATEGORY PROPERTIES FOR \p and \P</a> 21<li><a name="TOC6" href="#SEC6">PCRE2 SPECIAL CATEGORY PROPERTIES FOR \p and \P</a> 22<li><a name="TOC7" href="#SEC7">SCRIPT NAMES FOR \p AND \P</a> 23<li><a name="TOC8" href="#SEC8">CHARACTER CLASSES</a> 24<li><a name="TOC9" href="#SEC9">QUANTIFIERS</a> 25<li><a name="TOC10" href="#SEC10">ANCHORS AND SIMPLE ASSERTIONS</a> 26<li><a name="TOC11" href="#SEC11">REPORTED MATCH POINT SETTING</a> 27<li><a name="TOC12" href="#SEC12">ALTERNATION</a> 28<li><a name="TOC13" href="#SEC13">CAPTURING</a> 29<li><a name="TOC14" href="#SEC14">ATOMIC GROUPS</a> 30<li><a name="TOC15" href="#SEC15">COMMENT</a> 31<li><a name="TOC16" href="#SEC16">OPTION SETTING</a> 32<li><a name="TOC17" href="#SEC17">NEWLINE CONVENTION</a> 33<li><a name="TOC18" href="#SEC18">WHAT \R MATCHES</a> 34<li><a name="TOC19" href="#SEC19">LOOKAHEAD AND LOOKBEHIND ASSERTIONS</a> 35<li><a name="TOC20" href="#SEC20">SCRIPT RUNS</a> 36<li><a name="TOC21" href="#SEC21">BACKREFERENCES</a> 37<li><a name="TOC22" href="#SEC22">SUBROUTINE REFERENCES (POSSIBLY RECURSIVE)</a> 38<li><a name="TOC23" href="#SEC23">CONDITIONAL PATTERNS</a> 39<li><a name="TOC24" href="#SEC24">BACKTRACKING CONTROL</a> 40<li><a name="TOC25" href="#SEC25">CALLOUTS</a> 41<li><a name="TOC26" href="#SEC26">SEE ALSO</a> 42<li><a name="TOC27" href="#SEC27">AUTHOR</a> 43<li><a name="TOC28" href="#SEC28">REVISION</a> 44</ul> 45<br><a name="SEC1" href="#TOC1">PCRE2 REGULAR EXPRESSION SYNTAX SUMMARY</a><br> 46<P> 47The full syntax and semantics of the regular expressions that are supported by 48PCRE2 are described in the 49<a href="pcre2pattern.html"><b>pcre2pattern</b></a> 50documentation. This document contains a quick-reference summary of the syntax. 51</P> 52<br><a name="SEC2" href="#TOC1">QUOTING</a><br> 53<P> 54<pre> 55 \x where x is non-alphanumeric is a literal x 56 \Q...\E treat enclosed characters as literal 57</PRE> 58</P> 59<br><a name="SEC3" href="#TOC1">ESCAPED CHARACTERS</a><br> 60<P> 61This table applies to ASCII and Unicode environments. An unrecognized escape 62sequence causes an error. 63<pre> 64 \a alarm, that is, the BEL character (hex 07) 65 \cx "control-x", where x is any ASCII printing character 66 \e escape (hex 1B) 67 \f form feed (hex 0C) 68 \n newline (hex 0A) 69 \r carriage return (hex 0D) 70 \t tab (hex 09) 71 \0dd character with octal code 0dd 72 \ddd character with octal code ddd, or backreference 73 \o{ddd..} character with octal code ddd.. 74 \N{U+hh..} character with Unicode code point hh.. (Unicode mode only) 75 \xhh character with hex code hh 76 \x{hh..} character with hex code hh.. 77</pre> 78If PCRE2_ALT_BSUX or PCRE2_EXTRA_ALT_BSUX is set ("ALT_BSUX mode"), the 79following are also recognized: 80<pre> 81 \U the character "U" 82 \uhhhh character with hex code hhhh 83 \u{hh..} character with hex code hh.. but only for EXTRA_ALT_BSUX 84</pre> 85When \x is not followed by {, from zero to two hexadecimal digits are read, 86but in ALT_BSUX mode \x must be followed by two hexadecimal digits to be 87recognized as a hexadecimal escape; otherwise it matches a literal "x". 88Likewise, if \u (in ALT_BSUX mode) is not followed by four hexadecimal digits 89or (in EXTRA_ALT_BSUX mode) a sequence of hex digits in curly brackets, it 90matches a literal "u". 91</P> 92<P> 93Note that \0dd is always an octal code. The treatment of backslash followed by 94a non-zero digit is complicated; for details see the section 95<a href="pcre2pattern.html#digitsafterbackslash">"Non-printing characters"</a> 96in the 97<a href="pcre2pattern.html"><b>pcre2pattern</b></a> 98documentation, where details of escape processing in EBCDIC environments are 99also given. \N{U+hh..} is synonymous with \x{hh..} in PCRE2 but is not 100supported in EBCDIC environments. Note that \N not followed by an opening 101curly bracket has a different meaning (see below). 102</P> 103<br><a name="SEC4" href="#TOC1">CHARACTER TYPES</a><br> 104<P> 105<pre> 106 . any character except newline; 107 in dotall mode, any character whatsoever 108 \C one code unit, even in UTF mode (best avoided) 109 \d a decimal digit 110 \D a character that is not a decimal digit 111 \h a horizontal white space character 112 \H a character that is not a horizontal white space character 113 \N a character that is not a newline 114 \p{<i>xx</i>} a character with the <i>xx</i> property 115 \P{<i>xx</i>} a character without the <i>xx</i> property 116 \R a newline sequence 117 \s a white space character 118 \S a character that is not a white space character 119 \v a vertical white space character 120 \V a character that is not a vertical white space character 121 \w a "word" character 122 \W a "non-word" character 123 \X a Unicode extended grapheme cluster 124</pre> 125\C is dangerous because it may leave the current matching point in the middle 126of a UTF-8 or UTF-16 character. The application can lock out the use of \C by 127setting the PCRE2_NEVER_BACKSLASH_C option. It is also possible to build PCRE2 128with the use of \C permanently disabled. 129</P> 130<P> 131By default, \d, \s, and \w match only ASCII characters, even in UTF-8 mode 132or in the 16-bit and 32-bit libraries. However, if locale-specific matching is 133happening, \s and \w may also match characters with code points in the range 134128-255. If the PCRE2_UCP option is set, the behaviour of these escape 135sequences is changed to use Unicode properties and they match many more 136characters. 137</P> 138<br><a name="SEC5" href="#TOC1">GENERAL CATEGORY PROPERTIES FOR \p and \P</a><br> 139<P> 140<pre> 141 C Other 142 Cc Control 143 Cf Format 144 Cn Unassigned 145 Co Private use 146 Cs Surrogate 147 148 L Letter 149 Ll Lower case letter 150 Lm Modifier letter 151 Lo Other letter 152 Lt Title case letter 153 Lu Upper case letter 154 L& Ll, Lu, or Lt 155 156 M Mark 157 Mc Spacing mark 158 Me Enclosing mark 159 Mn Non-spacing mark 160 161 N Number 162 Nd Decimal number 163 Nl Letter number 164 No Other number 165 166 P Punctuation 167 Pc Connector punctuation 168 Pd Dash punctuation 169 Pe Close punctuation 170 Pf Final punctuation 171 Pi Initial punctuation 172 Po Other punctuation 173 Ps Open punctuation 174 175 S Symbol 176 Sc Currency symbol 177 Sk Modifier symbol 178 Sm Mathematical symbol 179 So Other symbol 180 181 Z Separator 182 Zl Line separator 183 Zp Paragraph separator 184 Zs Space separator 185</PRE> 186</P> 187<br><a name="SEC6" href="#TOC1">PCRE2 SPECIAL CATEGORY PROPERTIES FOR \p and \P</a><br> 188<P> 189<pre> 190 Xan Alphanumeric: union of properties L and N 191 Xps POSIX space: property Z or tab, NL, VT, FF, CR 192 Xsp Perl space: property Z or tab, NL, VT, FF, CR 193 Xuc Univerally-named character: one that can be 194 represented by a Universal Character Name 195 Xwd Perl word: property Xan or underscore 196</pre> 197Perl and POSIX space are now the same. Perl added VT to its space character set 198at release 5.18. 199</P> 200<br><a name="SEC7" href="#TOC1">SCRIPT NAMES FOR \p AND \P</a><br> 201<P> 202Adlam, 203Ahom, 204Anatolian_Hieroglyphs, 205Arabic, 206Armenian, 207Avestan, 208Balinese, 209Bamum, 210Bassa_Vah, 211Batak, 212Bengali, 213Bhaiksuki, 214Bopomofo, 215Brahmi, 216Braille, 217Buginese, 218Buhid, 219Canadian_Aboriginal, 220Carian, 221Caucasian_Albanian, 222Chakma, 223Cham, 224Cherokee, 225Common, 226Coptic, 227Cuneiform, 228Cypriot, 229Cyrillic, 230Deseret, 231Devanagari, 232Dogra, 233Duployan, 234Egyptian_Hieroglyphs, 235Elbasan, 236Ethiopic, 237Georgian, 238Glagolitic, 239Gothic, 240Grantha, 241Greek, 242Gujarati, 243Gunjala_Gondi, 244Gurmukhi, 245Han, 246Hangul, 247Hanifi_Rohingya, 248Hanunoo, 249Hatran, 250Hebrew, 251Hiragana, 252Imperial_Aramaic, 253Inherited, 254Inscriptional_Pahlavi, 255Inscriptional_Parthian, 256Javanese, 257Kaithi, 258Kannada, 259Katakana, 260Kayah_Li, 261Kharoshthi, 262Khmer, 263Khojki, 264Khudawadi, 265Lao, 266Latin, 267Lepcha, 268Limbu, 269Linear_A, 270Linear_B, 271Lisu, 272Lycian, 273Lydian, 274Mahajani, 275Makasar, 276Malayalam, 277Mandaic, 278Manichaean, 279Marchen, 280Masaram_Gondi, 281Medefaidrin, 282Meetei_Mayek, 283Mende_Kikakui, 284Meroitic_Cursive, 285Meroitic_Hieroglyphs, 286Miao, 287Modi, 288Mongolian, 289Mro, 290Multani, 291Myanmar, 292Nabataean, 293New_Tai_Lue, 294Newa, 295Nko, 296Nushu, 297Ogham, 298Ol_Chiki, 299Old_Hungarian, 300Old_Italic, 301Old_North_Arabian, 302Old_Permic, 303Old_Persian, 304Old_Sogdian, 305Old_South_Arabian, 306Old_Turkic, 307Oriya, 308Osage, 309Osmanya, 310Pahawh_Hmong, 311Palmyrene, 312Pau_Cin_Hau, 313Phags_Pa, 314Phoenician, 315Psalter_Pahlavi, 316Rejang, 317Runic, 318Samaritan, 319Saurashtra, 320Sharada, 321Shavian, 322Siddham, 323SignWriting, 324Sinhala, 325Sogdian, 326Sora_Sompeng, 327Soyombo, 328Sundanese, 329Syloti_Nagri, 330Syriac, 331Tagalog, 332Tagbanwa, 333Tai_Le, 334Tai_Tham, 335Tai_Viet, 336Takri, 337Tamil, 338Tangut, 339Telugu, 340Thaana, 341Thai, 342Tibetan, 343Tifinagh, 344Tirhuta, 345Ugaritic, 346Vai, 347Warang_Citi, 348Yi, 349Zanabazar_Square. 350</P> 351<br><a name="SEC8" href="#TOC1">CHARACTER CLASSES</a><br> 352<P> 353<pre> 354 [...] positive character class 355 [^...] negative character class 356 [x-y] range (can be used for hex characters) 357 [[:xxx:]] positive POSIX named set 358 [[:^xxx:]] negative POSIX named set 359 360 alnum alphanumeric 361 alpha alphabetic 362 ascii 0-127 363 blank space or tab 364 cntrl control character 365 digit decimal digit 366 graph printing, excluding space 367 lower lower case letter 368 print printing, including space 369 punct printing, excluding alphanumeric 370 space white space 371 upper upper case letter 372 word same as \w 373 xdigit hexadecimal digit 374</pre> 375In PCRE2, POSIX character set names recognize only ASCII characters by default, 376but some of them use Unicode properties if PCRE2_UCP is set. You can use 377\Q...\E inside a character class. 378</P> 379<br><a name="SEC9" href="#TOC1">QUANTIFIERS</a><br> 380<P> 381<pre> 382 ? 0 or 1, greedy 383 ?+ 0 or 1, possessive 384 ?? 0 or 1, lazy 385 * 0 or more, greedy 386 *+ 0 or more, possessive 387 *? 0 or more, lazy 388 + 1 or more, greedy 389 ++ 1 or more, possessive 390 +? 1 or more, lazy 391 {n} exactly n 392 {n,m} at least n, no more than m, greedy 393 {n,m}+ at least n, no more than m, possessive 394 {n,m}? at least n, no more than m, lazy 395 {n,} n or more, greedy 396 {n,}+ n or more, possessive 397 {n,}? n or more, lazy 398</PRE> 399</P> 400<br><a name="SEC10" href="#TOC1">ANCHORS AND SIMPLE ASSERTIONS</a><br> 401<P> 402<pre> 403 \b word boundary 404 \B not a word boundary 405 ^ start of subject 406 also after an internal newline in multiline mode 407 (after any newline if PCRE2_ALT_CIRCUMFLEX is set) 408 \A start of subject 409 $ end of subject 410 also before newline at end of subject 411 also before internal newline in multiline mode 412 \Z end of subject 413 also before newline at end of subject 414 \z end of subject 415 \G first matching position in subject 416</PRE> 417</P> 418<br><a name="SEC11" href="#TOC1">REPORTED MATCH POINT SETTING</a><br> 419<P> 420<pre> 421 \K set reported start of match 422</pre> 423\K is honoured in positive assertions, but ignored in negative ones. 424</P> 425<br><a name="SEC12" href="#TOC1">ALTERNATION</a><br> 426<P> 427<pre> 428 expr|expr|expr... 429</PRE> 430</P> 431<br><a name="SEC13" href="#TOC1">CAPTURING</a><br> 432<P> 433<pre> 434 (...) capture group 435 (?<name>...) named capture group (Perl) 436 (?'name'...) named capture group (Perl) 437 (?P<name>...) named capture group (Python) 438 (?:...) non-capture group 439 (?|...) non-capture group; reset group numbers for 440 capture groups in each alternative 441</pre> 442In non-UTF modes, names may contain underscores and ASCII letters and digits; 443in UTF modes, any Unicode letters and Unicode decimal digits are permitted. In 444both cases, a name must not start with a digit. 445</P> 446<br><a name="SEC14" href="#TOC1">ATOMIC GROUPS</a><br> 447<P> 448<pre> 449 (?>...) atomic non-capture group 450 (*atomic:...) atomic non-capture group 451</PRE> 452</P> 453<br><a name="SEC15" href="#TOC1">COMMENT</a><br> 454<P> 455<pre> 456 (?#....) comment (not nestable) 457</PRE> 458</P> 459<br><a name="SEC16" href="#TOC1">OPTION SETTING</a><br> 460<P> 461Changes of these options within a group are automatically cancelled at the end 462of the group. 463<pre> 464 (?i) caseless 465 (?J) allow duplicate names 466 (?m) multiline 467 (?n) no auto capture 468 (?s) single line (dotall) 469 (?U) default ungreedy (lazy) 470 (?x) extended: ignore white space except in classes 471 (?xx) as (?x) but also ignore space and tab in classes 472 (?-...) unset option(s) 473 (?^) unset imnsx options 474</pre> 475Unsetting x or xx unsets both. Several options may be set at once, and a 476mixture of setting and unsetting such as (?i-x) is allowed, but there may be 477only one hyphen. Setting (but no unsetting) is allowed after (?^ for example 478(?^in). An option setting may appear at the start of a non-capture group, for 479example (?i:...). 480</P> 481<P> 482The following are recognized only at the very start of a pattern or after one 483of the newline or \R options with similar syntax. More than one of them may 484appear. For the first three, d is a decimal number. 485<pre> 486 (*LIMIT_DEPTH=d) set the backtracking limit to d 487 (*LIMIT_HEAP=d) set the heap size limit to d * 1024 bytes 488 (*LIMIT_MATCH=d) set the match limit to d 489 (*NOTEMPTY) set PCRE2_NOTEMPTY when matching 490 (*NOTEMPTY_ATSTART) set PCRE2_NOTEMPTY_ATSTART when matching 491 (*NO_AUTO_POSSESS) no auto-possessification (PCRE2_NO_AUTO_POSSESS) 492 (*NO_DOTSTAR_ANCHOR) no .* anchoring (PCRE2_NO_DOTSTAR_ANCHOR) 493 (*NO_JIT) disable JIT optimization 494 (*NO_START_OPT) no start-match optimization (PCRE2_NO_START_OPTIMIZE) 495 (*UTF) set appropriate UTF mode for the library in use 496 (*UCP) set PCRE2_UCP (use Unicode properties for \d etc) 497</pre> 498Note that LIMIT_DEPTH, LIMIT_HEAP, and LIMIT_MATCH can only reduce the value of 499the limits set by the caller of <b>pcre2_match()</b> or <b>pcre2_dfa_match()</b>, 500not increase them. LIMIT_RECURSION is an obsolete synonym for LIMIT_DEPTH. The 501application can lock out the use of (*UTF) and (*UCP) by setting the 502PCRE2_NEVER_UTF or PCRE2_NEVER_UCP options, respectively, at compile time. 503</P> 504<br><a name="SEC17" href="#TOC1">NEWLINE CONVENTION</a><br> 505<P> 506These are recognized only at the very start of the pattern or after option 507settings with a similar syntax. 508<pre> 509 (*CR) carriage return only 510 (*LF) linefeed only 511 (*CRLF) carriage return followed by linefeed 512 (*ANYCRLF) all three of the above 513 (*ANY) any Unicode newline sequence 514 (*NUL) the NUL character (binary zero) 515</PRE> 516</P> 517<br><a name="SEC18" href="#TOC1">WHAT \R MATCHES</a><br> 518<P> 519These are recognized only at the very start of the pattern or after option 520setting with a similar syntax. 521<pre> 522 (*BSR_ANYCRLF) CR, LF, or CRLF 523 (*BSR_UNICODE) any Unicode newline sequence 524</PRE> 525</P> 526<br><a name="SEC19" href="#TOC1">LOOKAHEAD AND LOOKBEHIND ASSERTIONS</a><br> 527<P> 528<pre> 529 (?=...) ) 530 (*pla:...) ) positive lookahead 531 (*positive_lookahead:...) ) 532 533 (?!...) ) 534 (*nla:...) ) negative lookahead 535 (*negative_lookahead:...) ) 536 537 (?<=...) ) 538 (*plb:...) ) positive lookbehind 539 (*positive_lookbehind:...) ) 540 541 (?<!...) ) 542 (*nlb:...) ) negative lookbehind 543 (*negative_lookbehind:...) ) 544</pre> 545Each top-level branch of a lookbehind must be of a fixed length. 546</P> 547<br><a name="SEC20" href="#TOC1">SCRIPT RUNS</a><br> 548<P> 549<pre> 550 (*script_run:...) ) script run, can be backtracked into 551 (*sr:...) ) 552 553 (*atomic_script_run:...) ) atomic script run 554 (*asr:...) ) 555</PRE> 556</P> 557<br><a name="SEC21" href="#TOC1">BACKREFERENCES</a><br> 558<P> 559<pre> 560 \n reference by number (can be ambiguous) 561 \gn reference by number 562 \g{n} reference by number 563 \g+n relative reference by number (PCRE2 extension) 564 \g-n relative reference by number 565 \g{+n} relative reference by number (PCRE2 extension) 566 \g{-n} relative reference by number 567 \k<name> reference by name (Perl) 568 \k'name' reference by name (Perl) 569 \g{name} reference by name (Perl) 570 \k{name} reference by name (.NET) 571 (?P=name) reference by name (Python) 572</PRE> 573</P> 574<br><a name="SEC22" href="#TOC1">SUBROUTINE REFERENCES (POSSIBLY RECURSIVE)</a><br> 575<P> 576<pre> 577 (?R) recurse whole pattern 578 (?n) call subroutine by absolute number 579 (?+n) call subroutine by relative number 580 (?-n) call subroutine by relative number 581 (?&name) call subroutine by name (Perl) 582 (?P>name) call subroutine by name (Python) 583 \g<name> call subroutine by name (Oniguruma) 584 \g'name' call subroutine by name (Oniguruma) 585 \g<n> call subroutine by absolute number (Oniguruma) 586 \g'n' call subroutine by absolute number (Oniguruma) 587 \g<+n> call subroutine by relative number (PCRE2 extension) 588 \g'+n' call subroutine by relative number (PCRE2 extension) 589 \g<-n> call subroutine by relative number (PCRE2 extension) 590 \g'-n' call subroutine by relative number (PCRE2 extension) 591</PRE> 592</P> 593<br><a name="SEC23" href="#TOC1">CONDITIONAL PATTERNS</a><br> 594<P> 595<pre> 596 (?(condition)yes-pattern) 597 (?(condition)yes-pattern|no-pattern) 598 599 (?(n) absolute reference condition 600 (?(+n) relative reference condition 601 (?(-n) relative reference condition 602 (?(<name>) named reference condition (Perl) 603 (?('name') named reference condition (Perl) 604 (?(name) named reference condition (PCRE2, deprecated) 605 (?(R) overall recursion condition 606 (?(Rn) specific numbered group recursion condition 607 (?(R&name) specific named group recursion condition 608 (?(DEFINE) define groups for reference 609 (?(VERSION[>]=n.m) test PCRE2 version 610 (?(assert) assertion condition 611</pre> 612Note the ambiguity of (?(R) and (?(Rn) which might be named reference 613conditions or recursion tests. Such a condition is interpreted as a reference 614condition if the relevant named group exists. 615</P> 616<br><a name="SEC24" href="#TOC1">BACKTRACKING CONTROL</a><br> 617<P> 618All backtracking control verbs may be in the form (*VERB:NAME). For (*MARK) the 619name is mandatory, for the others it is optional. (*SKIP) changes its behaviour 620if :NAME is present. The others just set a name for passing back to the caller, 621but this is not a name that (*SKIP) can see. The following act immediately they 622are reached: 623<pre> 624 (*ACCEPT) force successful match 625 (*FAIL) force backtrack; synonym (*F) 626 (*MARK:NAME) set name to be passed back; synonym (*:NAME) 627</pre> 628The following act only when a subsequent match failure causes a backtrack to 629reach them. They all force a match failure, but they differ in what happens 630afterwards. Those that advance the start-of-match point do so only if the 631pattern is not anchored. 632<pre> 633 (*COMMIT) overall failure, no advance of starting point 634 (*PRUNE) advance to next starting character 635 (*SKIP) advance to current matching position 636 (*SKIP:NAME) advance to position corresponding to an earlier 637 (*MARK:NAME); if not found, the (*SKIP) is ignored 638 (*THEN) local failure, backtrack to next alternation 639</pre> 640The effect of one of these verbs in a group called as a subroutine is confined 641to the subroutine call. 642</P> 643<br><a name="SEC25" href="#TOC1">CALLOUTS</a><br> 644<P> 645<pre> 646 (?C) callout (assumed number 0) 647 (?Cn) callout with numerical data n 648 (?C"text") callout with string data 649</pre> 650The allowed string delimiters are ` ' " ^ % # $ (which are the same for the 651start and the end), and the starting delimiter { matched with the ending 652delimiter }. To encode the ending delimiter within the string, double it. 653</P> 654<br><a name="SEC26" href="#TOC1">SEE ALSO</a><br> 655<P> 656<b>pcre2pattern</b>(3), <b>pcre2api</b>(3), <b>pcre2callout</b>(3), 657<b>pcre2matching</b>(3), <b>pcre2</b>(3). 658</P> 659<br><a name="SEC27" href="#TOC1">AUTHOR</a><br> 660<P> 661Philip Hazel 662<br> 663University Computing Service 664<br> 665Cambridge, England. 666<br> 667</P> 668<br><a name="SEC28" href="#TOC1">REVISION</a><br> 669<P> 670Last updated: 11 February 2019 671<br> 672Copyright © 1997-2019 University of Cambridge. 673<br> 674<p> 675Return to the <a href="index.html">PCRE2 index page</a>. 676</p> 677