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