• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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