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 261Cypro_Minoan 262Cyrillic 263Deseret 264Devanagari 265Dives_Akuru 266Dogra 267Duployan 268Egyptian_Hieroglyphs 269Elbasan 270Elymaic 271Ethiopic 272Georgian 273Glagolitic 274Gothic 275Grantha 276Greek 277Gujarati 278Gunjala_Gondi 279Gurmukhi 280Han 281Hangul 282Hanifi_Rohingya 283Hanunoo 284Hatran 285Hebrew 286Hiragana 287Imperial_Aramaic 288Inherited 289Inscriptional_Pahlavi 290Inscriptional_Parthian 291Javanese 292Kaithi 293Kannada 294Katakana 295Kayah_Li 296Kharoshthi 297Khitan_Small_Script 298Khmer 299Khojki 300Khudawadi 301Lao 302Latin 303Lepcha 304Limbu 305Linear_A 306Linear_B 307Lisu 308Lycian 309Lydian 310Mahajani 311Makasar 312Malayalam 313Mandaic 314Manichaean 315Marchen 316Masaram_Gondi 317Medefaidrin 318Meetei_Mayek 319Mende_Kikakui 320Meroitic_Cursive 321Meroitic_Hieroglyphs 322Miao 323Modi 324Mongolian 325Mro 326Multani 327Myanmar 328Nabataean 329Nandinagari 330New_Tai_Lue 331Newa 332Nko 333Nushu 334Nyiakeng_Puachue_Hmong 335Ogham 336Ol_Chiki 337Old_Hungarian 338Old_Italic 339Old_North_Arabian 340Old_Permic 341Old_Persian 342Old_Sogdian 343Old_South_Arabian 344Old_Turkic 345Old_Uyghur 346Oriya 347Osage 348Osmanya 349Pahawh_Hmong 350Palmyrene 351Pau_Cin_Hau 352Phags_Pa 353Phoenician 354Psalter_Pahlavi 355Rejang 356Runic 357Samaritan 358Saurashtra 359Sharada 360Shavian 361Siddham 362SignWriting 363Sinhala 364Sogdian 365Sora_Sompeng 366Soyombo 367Sundanese 368Syloti_Nagri 369Syriac 370Tagalog 371Tagbanwa 372Tai_Le 373Tai_Tham 374Tai_Viet 375Takri 376Tamil 377Tangsa 378Tangut 379Telugu 380Thaana 381Thai 382Tibetan 383Tifinagh 384Tirhuta 385Toto 386Ugaritic 387Vai 388Vithkuqi 389Wancho 390Warang_Citi 391Yezidi 392Yi 393Zanabazar_Square 394 395Vim character classes: 396\i identifier character NOT SUPPORTED vim 397\I «\i» except digits NOT SUPPORTED vim 398\k keyword character NOT SUPPORTED vim 399\K «\k» except digits NOT SUPPORTED vim 400\f file name character NOT SUPPORTED vim 401\F «\f» except digits NOT SUPPORTED vim 402\p printable character NOT SUPPORTED vim 403\P «\p» except digits NOT SUPPORTED vim 404\s whitespace character (== [ \t]) NOT SUPPORTED vim 405\S non-white space character (== [^ \t]) NOT SUPPORTED vim 406\d digits (== [0-9]) vim 407\D not «\d» vim 408\x hex digits (== [0-9A-Fa-f]) NOT SUPPORTED vim 409\X not «\x» NOT SUPPORTED vim 410\o octal digits (== [0-7]) NOT SUPPORTED vim 411\O not «\o» NOT SUPPORTED vim 412\w word character vim 413\W not «\w» vim 414\h head of word character NOT SUPPORTED vim 415\H not «\h» NOT SUPPORTED vim 416\a alphabetic NOT SUPPORTED vim 417\A not «\a» NOT SUPPORTED vim 418\l lowercase NOT SUPPORTED vim 419\L not lowercase NOT SUPPORTED vim 420\u uppercase NOT SUPPORTED vim 421\U not uppercase NOT SUPPORTED vim 422\_x «\x» plus newline, for any «x» NOT SUPPORTED vim 423 424Vim flags: 425\c ignore case NOT SUPPORTED vim 426\C match case NOT SUPPORTED vim 427\m magic NOT SUPPORTED vim 428\M nomagic NOT SUPPORTED vim 429\v verymagic NOT SUPPORTED vim 430\V verynomagic NOT SUPPORTED vim 431\Z ignore differences in Unicode combining characters NOT SUPPORTED vim 432 433Magic: 434(?{code}) arbitrary Perl code NOT SUPPORTED perl 435(??{code}) postponed arbitrary Perl code NOT SUPPORTED perl 436(?n) recursive call to regexp capturing group «n» NOT SUPPORTED 437(?+n) recursive call to relative group «+n» NOT SUPPORTED 438(?-n) recursive call to relative group «-n» NOT SUPPORTED 439(?C) PCRE callout NOT SUPPORTED pcre 440(?R) recursive call to entire regexp (== (?0)) NOT SUPPORTED 441(?&name) recursive call to named group NOT SUPPORTED 442(?P=name) named backreference NOT SUPPORTED 443(?P>name) recursive call to named group NOT SUPPORTED 444(?(cond)true|false) conditional branch NOT SUPPORTED 445(?(cond)true) conditional branch NOT SUPPORTED 446(*ACCEPT) make regexps more like Prolog NOT SUPPORTED 447(*COMMIT) NOT SUPPORTED 448(*F) NOT SUPPORTED 449(*FAIL) NOT SUPPORTED 450(*MARK) NOT SUPPORTED 451(*PRUNE) NOT SUPPORTED 452(*SKIP) NOT SUPPORTED 453(*THEN) NOT SUPPORTED 454(*ANY) set newline convention NOT SUPPORTED 455(*ANYCRLF) NOT SUPPORTED 456(*CR) NOT SUPPORTED 457(*CRLF) NOT SUPPORTED 458(*LF) NOT SUPPORTED 459(*BSR_ANYCRLF) set \R convention NOT SUPPORTED pcre 460(*BSR_UNICODE) NOT SUPPORTED pcre 461 462