| OLD | NEW |
| (Empty) |
| 1 RE2 regular expression syntax reference | |
| 2 ------------------------------------- | |
| 3 | |
| 4 Single 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 | |
| 17 Composites: | |
| 18 xy «x» followed by «y» | |
| 19 x|y «x» or «y» (prefer «x») | |
| 20 | |
| 21 Repetitions: | |
| 22 x* zero or more «x», prefer more | |
| 23 x+ one or more «x», prefer more | |
| 24 x? zero or one «x», prefer one | |
| 25 x{n,m} «n» or «n»+1 or ... or «m» «x», prefer more | |
| 26 x{n,} «n» or more «x», prefer more | |
| 27 x{n} exactly «n» «x» | |
| 28 x*? zero or more «x», prefer fewer | |
| 29 x+? one or more «x», prefer fewer | |
| 30 x?? zero or one «x», prefer zero | |
| 31 x{n,m}? «n» or «n»+1 or ... or «m» «x», prefer fewer | |
| 32 x{n,}? «n» or more «x», prefer fewer | |
| 33 x{n}? exactly «n» «x» | |
| 34 x{} (== x*) NOT SUPPORTED vim | |
| 35 x{-} (== x*?) NOT SUPPORTED vim | |
| 36 x{-n} (== x{n}?) NOT SUPPORTED vim | |
| 37 x= (== x?) NOT SUPPORTED vim | |
| 38 | |
| 39 Implementation restriction: The counting forms «x{n,m}», «x{n,}», and «x{n}» | |
| 40 reject forms that create a minimum or maximum repetition count above 1000. | |
| 41 Unlimited repetitions are not subject to this restriction. | |
| 42 | |
| 43 Possessive repetitions: | |
| 44 x*+ zero or more «x», possessive NOT SUPPORTED | |
| 45 x++ one or more «x», possessive NOT SUPPORTED | |
| 46 x?+ zero or one «x», possessive NOT SUPPORTED | |
| 47 x{n,m}+ «n» or ... or «m» «x», possessive NOT SUPPORTED | |
| 48 x{n,}+ «n» or more «x», possessive NOT SUPPORTED | |
| 49 x{n}+ exactly «n» «x», possessive NOT SUPPORTED | |
| 50 | |
| 51 Grouping: | |
| 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 | |
| 62 re@> possessive match of «re» NOT SUPPORTED vim | |
| 63 %(re) non-capturing group NOT SUPPORTED vim | |
| 64 | |
| 65 Flags: | |
| 66 i case-insensitive (default false) | |
| 67 m multi-line mode: «^» and «$» match begin/end line in addition to begin/e
nd text (default false) | |
| 68 s let «.» match «\n» (default false) | |
| 69 U ungreedy: swap meaning of «x*» and «x*?», «x+» and «x+?», etc (default f
alse) | |
| 70 Flag syntax is «xyz» (set) or «-xyz» (clear) or «xy-z» (set «xy», clear «z»). | |
| 71 | |
| 72 Empty 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 | |
| 86 re& before text matching «re» NOT SUPPORTED vim | |
| 87 re@= before text matching «re» NOT SUPPORTED vim | |
| 88 re@! before text not matching «re» NOT SUPPORTED vim | |
| 89 re@<= after text matching «re» NOT SUPPORTED vim | |
| 90 re@<! 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 | |
| 102 Escape 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 | |
| 144 Character class elements: | |
| 145 x single character | |
| 146 A-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 | |
| 152 Named 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{Nam
e}) | |
| 161 | |
| 162 Perl 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 | |
| 175 ASCII 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 | |
| 191 Unicode character class names--general category: | |
| 192 C other | |
| 193 Cc control | |
| 194 Cf format | |
| 195 Cn unassigned code points NOT SUPPORTED | |
| 196 Co private use | |
| 197 Cs surrogate | |
| 198 L letter | |
| 199 LC cased letter NOT SUPPORTED | |
| 200 L& cased letter NOT SUPPORTED | |
| 201 Ll lowercase letter | |
| 202 Lm modifier letter | |
| 203 Lo other letter | |
| 204 Lt titlecase letter | |
| 205 Lu uppercase letter | |
| 206 M mark | |
| 207 Mc spacing mark | |
| 208 Me enclosing mark | |
| 209 Mn non-spacing mark | |
| 210 N number | |
| 211 Nd decimal number | |
| 212 Nl letter number | |
| 213 No other number | |
| 214 P punctuation | |
| 215 Pc connector punctuation | |
| 216 Pd dash punctuation | |
| 217 Pe close punctuation | |
| 218 Pf final punctuation | |
| 219 Pi initial punctuation | |
| 220 Po other punctuation | |
| 221 Ps open punctuation | |
| 222 S symbol | |
| 223 Sc currency symbol | |
| 224 Sk modifier symbol | |
| 225 Sm math symbol | |
| 226 So other symbol | |
| 227 Z separator | |
| 228 Zl line separator | |
| 229 Zp paragraph separator | |
| 230 Zs space separator | |
| 231 | |
| 232 Unicode character class names--scripts: | |
| 233 Arabic Arabic | |
| 234 Armenian Armenian | |
| 235 Balinese Balinese | |
| 236 Bamum Bamum | |
| 237 Batak Batak | |
| 238 Bengali Bengali | |
| 239 Bopomofo Bopomofo | |
| 240 Brahmi Brahmi | |
| 241 Braille Braille | |
| 242 Buginese Buginese | |
| 243 Buhid Buhid | |
| 244 Canadian_Aboriginal Canadian Aboriginal | |
| 245 Carian Carian | |
| 246 Chakma Chakma | |
| 247 Cham Cham | |
| 248 Cherokee Cherokee | |
| 249 Common characters not specific to one script | |
| 250 Coptic Coptic | |
| 251 Cuneiform Cuneiform | |
| 252 Cypriot Cypriot | |
| 253 Cyrillic Cyrillic | |
| 254 Deseret Deseret | |
| 255 Devanagari Devanagari | |
| 256 Egyptian_Hieroglyphs Egyptian Hieroglyphs | |
| 257 Ethiopic Ethiopic | |
| 258 Georgian Georgian | |
| 259 Glagolitic Glagolitic | |
| 260 Gothic Gothic | |
| 261 Greek Greek | |
| 262 Gujarati Gujarati | |
| 263 Gurmukhi Gurmukhi | |
| 264 Han Han | |
| 265 Hangul Hangul | |
| 266 Hanunoo Hanunoo | |
| 267 Hebrew Hebrew | |
| 268 Hiragana Hiragana | |
| 269 Imperial_Aramaic Imperial Aramaic | |
| 270 Inherited inherit script from previous character | |
| 271 Inscriptional_Pahlavi Inscriptional Pahlavi | |
| 272 Inscriptional_Parthian Inscriptional Parthian | |
| 273 Javanese Javanese | |
| 274 Kaithi Kaithi | |
| 275 Kannada Kannada | |
| 276 Katakana Katakana | |
| 277 Kayah_Li Kayah Li | |
| 278 Kharoshthi Kharoshthi | |
| 279 Khmer Khmer | |
| 280 Lao Lao | |
| 281 Latin Latin | |
| 282 Lepcha Lepcha | |
| 283 Limbu Limbu | |
| 284 Linear_B Linear B | |
| 285 Lycian Lycian | |
| 286 Lydian Lydian | |
| 287 Malayalam Malayalam | |
| 288 Mandaic Mandaic | |
| 289 Meetei_Mayek Meetei Mayek | |
| 290 Meroitic_Cursive Meroitic Cursive | |
| 291 Meroitic_Hieroglyphs Meroitic Hieroglyphs | |
| 292 Miao Miao | |
| 293 Mongolian Mongolian | |
| 294 Myanmar Myanmar | |
| 295 New_Tai_Lue New Tai Lue (aka Simplified Tai Lue) | |
| 296 Nko Nko | |
| 297 Ogham Ogham | |
| 298 Ol_Chiki Ol Chiki | |
| 299 Old_Italic Old Italic | |
| 300 Old_Persian Old Persian | |
| 301 Old_South_Arabian Old South Arabian | |
| 302 Old_Turkic Old Turkic | |
| 303 Oriya Oriya | |
| 304 Osmanya Osmanya | |
| 305 Phags_Pa 'Phags Pa | |
| 306 Phoenician Phoenician | |
| 307 Rejang Rejang | |
| 308 Runic Runic | |
| 309 Saurashtra Saurashtra | |
| 310 Sharada Sharada | |
| 311 Shavian Shavian | |
| 312 Sinhala Sinhala | |
| 313 Sora_Sompeng Sora Sompeng | |
| 314 Sundanese Sundanese | |
| 315 Syloti_Nagri Syloti Nagri | |
| 316 Syriac Syriac | |
| 317 Tagalog Tagalog | |
| 318 Tagbanwa Tagbanwa | |
| 319 Tai_Le Tai Le | |
| 320 Tai_Tham Tai Tham | |
| 321 Tai_Viet Tai Viet | |
| 322 Takri Takri | |
| 323 Tamil Tamil | |
| 324 Telugu Telugu | |
| 325 Thaana Thaana | |
| 326 Thai Thai | |
| 327 Tibetan Tibetan | |
| 328 Tifinagh Tifinagh | |
| 329 Ugaritic Ugaritic | |
| 330 Vai Vai | |
| 331 Yi Yi | |
| 332 | |
| 333 Vim character classes: | |
| 334 \i identifier character NOT SUPPORTED vim | |
| 335 \I «\i» except digits NOT SUPPORTED vim | |
| 336 \k keyword character NOT SUPPORTED vim | |
| 337 \K «\k» except digits NOT SUPPORTED vim | |
| 338 \f file name character NOT SUPPORTED vim | |
| 339 \F «\f» except digits NOT SUPPORTED vim | |
| 340 \p printable character NOT SUPPORTED vim | |
| 341 \P «\p» except digits NOT SUPPORTED vim | |
| 342 \s whitespace character (== [ \t]) NOT SUPPORTED vim | |
| 343 \S non-white space character (== [^ \t]) NOT SUPPORTED vim | |
| 344 \d digits (== [0-9]) vim | |
| 345 \D not «\d» vim | |
| 346 \x hex digits (== [0-9A-Fa-f]) NOT SUPPORTED vim | |
| 347 \X not «\x» NOT SUPPORTED vim | |
| 348 \o octal digits (== [0-7]) NOT SUPPORTED vim | |
| 349 \O not «\o» NOT SUPPORTED vim | |
| 350 \w word character vim | |
| 351 \W not «\w» vim | |
| 352 \h head of word character NOT SUPPORTED vim | |
| 353 \H not «\h» NOT SUPPORTED vim | |
| 354 \a alphabetic NOT SUPPORTED vim | |
| 355 \A not «\a» NOT SUPPORTED vim | |
| 356 \l lowercase NOT SUPPORTED vim | |
| 357 \L not lowercase NOT SUPPORTED vim | |
| 358 \u uppercase NOT SUPPORTED vim | |
| 359 \U not uppercase NOT SUPPORTED vim | |
| 360 \_x «\x» plus newline, for any «x» NOT SUPPORTED vim | |
| 361 | |
| 362 Vim flags: | |
| 363 \c ignore case NOT SUPPORTED vim | |
| 364 \C match case NOT SUPPORTED vim | |
| 365 \m magic NOT SUPPORTED vim | |
| 366 \M nomagic NOT SUPPORTED vim | |
| 367 \v verymagic NOT SUPPORTED vim | |
| 368 \V verynomagic NOT SUPPORTED vim | |
| 369 \Z ignore differences in Unicode combining characters NOT SUPPORTED vim | |
| 370 | |
| 371 Magic: | |
| 372 (?{code}) arbitrary Perl code NOT SUPPORTED perl | |
| 373 (??{code}) postponed arbitrary Perl code NOT SUPPORTED perl | |
| 374 (?n) recursive call to regexp capturing group «n» NOT SUPPORTED | |
| 375 (?+n) recursive call to relative group «+n» NOT SUPPORTED | |
| 376 (?-n) recursive call to relative group «-n» NOT SUPPORTED | |
| 377 (?C) PCRE callout NOT SUPPORTED pcre | |
| 378 (?R) recursive call to entire regexp (== (?0)) NOT SUPPORTED | |
| 379 (?&name) recursive call to named group NOT SUPPORTED | |
| 380 (?P=name) named backreference NOT SUPPORTED | |
| 381 (?P>name) recursive call to named group NOT SUPPORTED | |
| 382 (?(cond)true|false) conditional branch NOT SUPPORTED | |
| 383 (?(cond)true) conditional branch NOT SUPPORTED | |
| 384 (*ACCEPT) make regexps more like Prolog NOT SUPPORTED | |
| 385 (*COMMIT) NOT SUPPORTED | |
| 386 (*F) NOT SUPPORTED | |
| 387 (*FAIL) NOT SUPPORTED | |
| 388 (*MARK) NOT SUPPORTED | |
| 389 (*PRUNE) NOT SUPPORTED | |
| 390 (*SKIP) NOT SUPPORTED | |
| 391 (*THEN) NOT SUPPORTED | |
| 392 (*ANY) set newline convention NOT SUPPORTED | |
| 393 (*ANYCRLF) NOT SUPPORTED | |
| 394 (*CR) NOT SUPPORTED | |
| 395 (*CRLF) NOT SUPPORTED | |
| 396 (*LF) NOT SUPPORTED | |
| 397 (*BSR_ANYCRLF) set \R convention NOT SUPPORTED pcre | |
| 398 (*BSR_UNICODE) NOT SUPPORTED pcre | |
| 399 | |
| OLD | NEW |