1RE2 regular expression syntax reference 2------------------------------------- 3 4Single characters: 5. any character, possibly including newline (s=true) 6[xyz] character class 7[^xyz] negated character class 8\d Perl character class 9\D negated Perl character class 10[[:alpha:]] ASCII character class 11[[:^alpha:]] negated ASCII character class 12\pN Unicode character class (one-letter name) 13\p{Greek} Unicode character class 14\PN negated Unicode character class (one-letter name) 15\P{Greek} negated Unicode character class 16 17Composites: 18xy «x» followed by «y» 19x|y «x» or «y» (prefer «x») 20 21Repetitions: 22x* zero or more «x», prefer more 23x+ one or more «x», prefer more 24x? zero or one «x», prefer one 25x{n,m} «n» or «n»+1 or ... or «m» «x», prefer more 26x{n,} «n» or more «x», prefer more 27x{n} exactly «n» «x» 28x*? zero or more «x», prefer fewer 29x+? one or more «x», prefer fewer 30x?? zero or one «x», prefer zero 31x{n,m}? «n» or «n»+1 or ... or «m» «x», prefer fewer 32x{n,}? «n» or more «x», prefer fewer 33x{n}? exactly «n» «x» 34x{} (== x*) NOT SUPPORTED vim 35x{-} (== x*?) NOT SUPPORTED vim 36x{-n} (== x{n}?) NOT SUPPORTED vim 37x= (== x?) NOT SUPPORTED vim 38 39Implementation restriction: The counting forms «x{n,m}», «x{n,}», and «x{n}» 40reject forms that create a minimum or maximum repetition count above 1000. 41Unlimited repetitions are not subject to this restriction. 42 43Possessive repetitions: 44x*+ zero or more «x», possessive NOT SUPPORTED 45x++ one or more «x», possessive NOT SUPPORTED 46x?+ zero or one «x», possessive NOT SUPPORTED 47x{n,m}+ «n» or ... or «m» «x», possessive NOT SUPPORTED 48x{n,}+ «n» or more «x», possessive NOT SUPPORTED 49x{n}+ exactly «n» «x», possessive NOT SUPPORTED 50 51Grouping: 52(re) numbered capturing group (submatch) 53(?P<name>re) named & numbered capturing group (submatch) 54(?<name>re) named & numbered capturing group (submatch) NOT SUPPORTED 55(?'name're) named & numbered capturing group (submatch) NOT SUPPORTED 56(?:re) non-capturing group 57(?flags) set flags within current group; non-capturing 58(?flags:re) set flags during re; non-capturing 59(?#text) comment NOT SUPPORTED 60(?|x|y|z) branch numbering reset NOT SUPPORTED 61(?>re) possessive match of «re» NOT SUPPORTED 62re@> possessive match of «re» NOT SUPPORTED vim 63%(re) non-capturing group NOT SUPPORTED vim 64 65Flags: 66i case-insensitive (default false) 67m multi-line mode: «^» and «$» match begin/end line in addition to begin/end text (default false) 68s let «.» match «\n» (default false) 69U ungreedy: swap meaning of «x*» and «x*?», «x+» and «x+?», etc (default false) 70Flag syntax is «xyz» (set) or «-xyz» (clear) or «xy-z» (set «xy», clear «z»). 71 72Empty strings: 73^ at beginning of text or line («m»=true) 74$ at end of text (like «\z» not «\Z») or line («m»=true) 75\A at beginning of text 76\b at ASCII word boundary («\w» on one side and «\W», «\A», or «\z» on the other) 77\B not at ASCII word boundary 78\G at beginning of subtext being searched NOT SUPPORTED pcre 79\G at end of last match NOT SUPPORTED perl 80\Z at end of text, or before newline at end of text NOT SUPPORTED 81\z at end of text 82(?=re) before text matching «re» NOT SUPPORTED 83(?!re) before text not matching «re» NOT SUPPORTED 84(?<=re) after text matching «re» NOT SUPPORTED 85(?<!re) after text not matching «re» NOT SUPPORTED 86re& before text matching «re» NOT SUPPORTED vim 87re@= before text matching «re» NOT SUPPORTED vim 88re@! before text not matching «re» NOT SUPPORTED vim 89re@<= after text matching «re» NOT SUPPORTED vim 90re@<! after text not matching «re» NOT SUPPORTED vim 91\zs sets start of match (= \K) NOT SUPPORTED vim 92\ze sets end of match NOT SUPPORTED vim 93\%^ beginning of file NOT SUPPORTED vim 94\%$ end of file NOT SUPPORTED vim 95\%V on screen NOT SUPPORTED vim 96\%# cursor position NOT SUPPORTED vim 97\%'m mark «m» position NOT SUPPORTED vim 98\%23l in line 23 NOT SUPPORTED vim 99\%23c in column 23 NOT SUPPORTED vim 100\%23v in virtual column 23 NOT SUPPORTED vim 101 102Escape sequences: 103\a bell (== \007) 104\f form feed (== \014) 105\t horizontal tab (== \011) 106\n newline (== \012) 107\r carriage return (== \015) 108\v vertical tab character (== \013) 109\* literal «*», for any punctuation character «*» 110\123 octal character code (up to three digits) 111\x7F hex character code (exactly two digits) 112\x{10FFFF} hex character code 113\C match a single byte even in UTF-8 mode 114\Q...\E literal text «...» even if «...» has punctuation 115 116\1 backreference NOT SUPPORTED 117\b backspace NOT SUPPORTED (use «\010») 118\cK control char ^K NOT SUPPORTED (use «\001» etc) 119\e escape NOT SUPPORTED (use «\033») 120\g1 backreference NOT SUPPORTED 121\g{1} backreference NOT SUPPORTED 122\g{+1} backreference NOT SUPPORTED 123\g{-1} backreference NOT SUPPORTED 124\g{name} named backreference NOT SUPPORTED 125\g<name> subroutine call NOT SUPPORTED 126\g'name' subroutine call NOT SUPPORTED 127\k<name> named backreference NOT SUPPORTED 128\k'name' named backreference NOT SUPPORTED 129\lX lowercase «X» NOT SUPPORTED 130\ux uppercase «x» NOT SUPPORTED 131\L...\E lowercase text «...» NOT SUPPORTED 132\K reset beginning of «$0» NOT SUPPORTED 133\N{name} named Unicode character NOT SUPPORTED 134\R line break NOT SUPPORTED 135\U...\E upper case text «...» NOT SUPPORTED 136\X extended Unicode sequence NOT SUPPORTED 137 138\%d123 decimal character 123 NOT SUPPORTED vim 139\%xFF hex character FF NOT SUPPORTED vim 140\%o123 octal character 123 NOT SUPPORTED vim 141\%u1234 Unicode character 0x1234 NOT SUPPORTED vim 142\%U12345678 Unicode character 0x12345678 NOT SUPPORTED vim 143 144Character class elements: 145x single character 146A-Z character range (inclusive) 147\d Perl character class 148[:foo:] ASCII character class «foo» 149\p{Foo} Unicode character class «Foo» 150\pF Unicode character class «F» (one-letter name) 151 152Named character classes as character class elements: 153[\d] digits (== \d) 154[^\d] not digits (== \D) 155[\D] not digits (== \D) 156[^\D] not not digits (== \d) 157[[:name:]] named ASCII class inside character class (== [:name:]) 158[^[:name:]] named ASCII class inside negated character class (== [:^name:]) 159[\p{Name}] named Unicode property inside character class (== \p{Name}) 160[^\p{Name}] named Unicode property inside negated character class (== \P{Name}) 161 162Perl character classes (all ASCII-only): 163\d digits (== [0-9]) 164\D not digits (== [^0-9]) 165\s whitespace (== [\t\n\f\r ]) 166\S not whitespace (== [^\t\n\f\r ]) 167\w word characters (== [0-9A-Za-z_]) 168\W not word characters (== [^0-9A-Za-z_]) 169 170\h horizontal space NOT SUPPORTED 171\H not horizontal space NOT SUPPORTED 172\v vertical space NOT SUPPORTED 173\V not vertical space NOT SUPPORTED 174 175ASCII character classes: 176[[:alnum:]] alphanumeric (== [0-9A-Za-z]) 177[[:alpha:]] alphabetic (== [A-Za-z]) 178[[:ascii:]] ASCII (== [\x00-\x7F]) 179[[:blank:]] blank (== [\t ]) 180[[:cntrl:]] control (== [\x00-\x1F\x7F]) 181[[:digit:]] digits (== [0-9]) 182[[:graph:]] graphical (== [!-~] == [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]) 183[[:lower:]] lower case (== [a-z]) 184[[:print:]] printable (== [ -~] == [ [:graph:]]) 185[[:punct:]] punctuation (== [!-/:-@[-`{-~]) 186[[:space:]] whitespace (== [\t\n\v\f\r ]) 187[[:upper:]] upper case (== [A-Z]) 188[[:word:]] word characters (== [0-9A-Za-z_]) 189[[:xdigit:]] hex digit (== [0-9A-Fa-f]) 190 191Unicode character class names--general category: 192C other 193Cc control 194Cf format 195Cn unassigned code points NOT SUPPORTED 196Co private use 197Cs surrogate 198L letter 199LC cased letter NOT SUPPORTED 200L& cased letter NOT SUPPORTED 201Ll lowercase letter 202Lm modifier letter 203Lo other letter 204Lt titlecase letter 205Lu uppercase letter 206M mark 207Mc spacing mark 208Me enclosing mark 209Mn non-spacing mark 210N number 211Nd decimal number 212Nl letter number 213No other number 214P punctuation 215Pc connector punctuation 216Pd dash punctuation 217Pe close punctuation 218Pf final punctuation 219Pi initial punctuation 220Po other punctuation 221Ps open punctuation 222S symbol 223Sc currency symbol 224Sk modifier symbol 225Sm math symbol 226So other symbol 227Z separator 228Zl line separator 229Zp paragraph separator 230Zs space separator 231 232Unicode character class names--scripts: 233Adlam 234Ahom 235Anatolian_Hieroglyphs 236Arabic 237Armenian 238Avestan 239Balinese 240Bamum 241Bassa_Vah 242Batak 243Bengali 244Bhaiksuki 245Bopomofo 246Brahmi 247Braille 248Buginese 249Buhid 250Canadian_Aboriginal 251Carian 252Caucasian_Albanian 253Chakma 254Cham 255Cherokee 256Chorasmian 257Common 258Coptic 259Cuneiform 260Cypriot 261Cyrillic 262Deseret 263Devanagari 264Dives_Akuru 265Dogra 266Duployan 267Egyptian_Hieroglyphs 268Elbasan 269Elymaic 270Ethiopic 271Georgian 272Glagolitic 273Gothic 274Grantha 275Greek 276Gujarati 277Gunjala_Gondi 278Gurmukhi 279Han 280Hangul 281Hanifi_Rohingya 282Hanunoo 283Hatran 284Hebrew 285Hiragana 286Imperial_Aramaic 287Inherited 288Inscriptional_Pahlavi 289Inscriptional_Parthian 290Javanese 291Kaithi 292Kannada 293Katakana 294Kayah_Li 295Kharoshthi 296Khitan_Small_Script 297Khmer 298Khojki 299Khudawadi 300Lao 301Latin 302Lepcha 303Limbu 304Linear_A 305Linear_B 306Lisu 307Lycian 308Lydian 309Mahajani 310Makasar 311Malayalam 312Mandaic 313Manichaean 314Marchen 315Masaram_Gondi 316Medefaidrin 317Meetei_Mayek 318Mende_Kikakui 319Meroitic_Cursive 320Meroitic_Hieroglyphs 321Miao 322Modi 323Mongolian 324Mro 325Multani 326Myanmar 327Nabataean 328Nandinagari 329New_Tai_Lue 330Newa 331Nko 332Nushu 333Nyiakeng_Puachue_Hmong 334Ogham 335Ol_Chiki 336Old_Hungarian 337Old_Italic 338Old_North_Arabian 339Old_Permic 340Old_Persian 341Old_Sogdian 342Old_South_Arabian 343Old_Turkic 344Oriya 345Osage 346Osmanya 347Pahawh_Hmong 348Palmyrene 349Pau_Cin_Hau 350Phags_Pa 351Phoenician 352Psalter_Pahlavi 353Rejang 354Runic 355Samaritan 356Saurashtra 357Sharada 358Shavian 359Siddham 360SignWriting 361Sinhala 362Sogdian 363Sora_Sompeng 364Soyombo 365Sundanese 366Syloti_Nagri 367Syriac 368Tagalog 369Tagbanwa 370Tai_Le 371Tai_Tham 372Tai_Viet 373Takri 374Tamil 375Tangut 376Telugu 377Thaana 378Thai 379Tibetan 380Tifinagh 381Tirhuta 382Ugaritic 383Vai 384Wancho 385Warang_Citi 386Yezidi 387Yi 388Zanabazar_Square 389 390Vim character classes: 391\i identifier character NOT SUPPORTED vim 392\I «\i» except digits NOT SUPPORTED vim 393\k keyword character NOT SUPPORTED vim 394\K «\k» except digits NOT SUPPORTED vim 395\f file name character NOT SUPPORTED vim 396\F «\f» except digits NOT SUPPORTED vim 397\p printable character NOT SUPPORTED vim 398\P «\p» except digits NOT SUPPORTED vim 399\s whitespace character (== [ \t]) NOT SUPPORTED vim 400\S non-white space character (== [^ \t]) NOT SUPPORTED vim 401\d digits (== [0-9]) vim 402\D not «\d» vim 403\x hex digits (== [0-9A-Fa-f]) NOT SUPPORTED vim 404\X not «\x» NOT SUPPORTED vim 405\o octal digits (== [0-7]) NOT SUPPORTED vim 406\O not «\o» NOT SUPPORTED vim 407\w word character vim 408\W not «\w» vim 409\h head of word character NOT SUPPORTED vim 410\H not «\h» NOT SUPPORTED vim 411\a alphabetic NOT SUPPORTED vim 412\A not «\a» NOT SUPPORTED vim 413\l lowercase NOT SUPPORTED vim 414\L not lowercase NOT SUPPORTED vim 415\u uppercase NOT SUPPORTED vim 416\U not uppercase NOT SUPPORTED vim 417\_x «\x» plus newline, for any «x» NOT SUPPORTED vim 418 419Vim flags: 420\c ignore case NOT SUPPORTED vim 421\C match case NOT SUPPORTED vim 422\m magic NOT SUPPORTED vim 423\M nomagic NOT SUPPORTED vim 424\v verymagic NOT SUPPORTED vim 425\V verynomagic NOT SUPPORTED vim 426\Z ignore differences in Unicode combining characters NOT SUPPORTED vim 427 428Magic: 429(?{code}) arbitrary Perl code NOT SUPPORTED perl 430(??{code}) postponed arbitrary Perl code NOT SUPPORTED perl 431(?n) recursive call to regexp capturing group «n» NOT SUPPORTED 432(?+n) recursive call to relative group «+n» NOT SUPPORTED 433(?-n) recursive call to relative group «-n» NOT SUPPORTED 434(?C) PCRE callout NOT SUPPORTED pcre 435(?R) recursive call to entire regexp (== (?0)) NOT SUPPORTED 436(?&name) recursive call to named group NOT SUPPORTED 437(?P=name) named backreference NOT SUPPORTED 438(?P>name) recursive call to named group NOT SUPPORTED 439(?(cond)true|false) conditional branch NOT SUPPORTED 440(?(cond)true) conditional branch NOT SUPPORTED 441(*ACCEPT) make regexps more like Prolog NOT SUPPORTED 442(*COMMIT) NOT SUPPORTED 443(*F) NOT SUPPORTED 444(*FAIL) NOT SUPPORTED 445(*MARK) NOT SUPPORTED 446(*PRUNE) NOT SUPPORTED 447(*SKIP) NOT SUPPORTED 448(*THEN) NOT SUPPORTED 449(*ANY) set newline convention NOT SUPPORTED 450(*ANYCRLF) NOT SUPPORTED 451(*CR) NOT SUPPORTED 452(*CRLF) NOT SUPPORTED 453(*LF) NOT SUPPORTED 454(*BSR_ANYCRLF) set \R convention NOT SUPPORTED pcre 455(*BSR_UNICODE) NOT SUPPORTED pcre 456 457