Single characters
Use |
To match any character |
[set] |
In the set |
[^set] |
Not in the set |
[a-z] |
In the a-z range |
[^a-z] |
Not in the a-z range |
. |
Any except \n (new line) |
\char |
Escaped special character |
Control characters
Use |
To match |
Unicode |
\t |
Horizontal tab |
\u0009 |
\v |
Vertical tab |
\u000B |
\b |
Backspace |
\u0008 |
\e |
Escape |
\u001B |
\r |
Carriage return |
\u000D |
\f |
Form feed |
\u000C |
\n |
New line |
\u000A |
\a |
Bell (alarm) |
\u0007 |
\c char |
ASCII control character |
? |
Non-ASCII codes
Use |
To match character with |
\octal |
2-3 digit octal character code |
\x hex |
2-digit hex character code |
\u hex |
4-digit hex character code |
Character classes
Use |
To match character |
\p{ctgry} |
In that Unicode category or block |
\P{ctgry} |
Not in that Unicode category or block |
\w |
Word character (0-9A-Z_a-z) |
\W |
Non-word character |
\d |
Decimal digit |
\D |
Not a decimal digit |
\s |
White-space character |
\S |
Non-white-space char |
Quantifiers
Greedy |
Lazy |
Matches |
* |
*? |
0 or more times |
+ |
+? |
1 or more times |
? |
?? |
0 or 1 time |
{n} |
{n}? |
Exactly n times |
{n,} |
{n,}? |
At least n times |
{n,m} |
{n,m}? |
From n to m times |
Anchors
Use |
To specify position |
^ |
At start of string or line |
\A |
At start of string |
\z |
At end of string |
\Z |
At end (or before \n at end) of string |
$ |
At end (or before \n at end) of string or line |
\G |
Where previous match ended |
\b |
On word boundary |
\B |
Not on word boundary |
Groups
Use |
To define |
(<exp>) |
Indexed group |
(?<name><exp>) |
Named group e.g. (?<url>http.*) |
(?<name1-name2><exp>) |
Balancing group |
(?:<exp>) |
Noncapturing group |
(?=<exp>) |
Zero-width positive lookahead |
(?!<exp>) |
Zero-width negative lookahead |
(?<=<exp>) |
Zero-width positive lookbehind |
(?<!<exp>) |
Zero-width negative lookbehind |
(?><exp>) |
Non-backtracking (greedy) |
Inline options
Option |
Effect on match |
i |
Case-insensitive |
m |
Multiline mode |
n |
Explicit (named) |
s |
Single-line mode |
x |
Ignore white space |
Use |
To |
(?imnsx-imnsx) |
Set or disable the specified options |
(?imnsx-imnsx:<exp>) |
Set or disable the specified options within the expression |
Backreferences
Use |
To match |
\n |
Indexed group |
\k<name> |
Named group |
Alternation
Use |
To match |
a|b |
Either a or b |
(?(<exp>)yes|no) |
yes if is matched; no if isn't matched |
(?(name)yes|no) |
yes if name is matched; no if name isn't matched |
Substitution
Use |
To substitute |
$n |
Substring matched by group number n |
${name} |
Substring matched by group name |
$$ |
Literal $ character |
$& |
Copy of whole match |
$` |
Text before the match |
$' |
Text after the match |
$+ |
Last captured group |
$_ |
Entire input string |
Use |
To |
(?# comment) |
Add inline comment |
# |
Add x-mode comment |
For detailed information and examples, see https://aka.ms/regex
To test your regular expressions, see https://regexlib.com/RETester.aspx
Supported unicode categories
Category |
Description |
Lu |
Letter, uppercase |
Ll |
Letter, lowercase |
Lt |
Letter, title case |
Lm |
Letter, modifier |
Lo |
Letter, other |
L |
Letter, all |
Mn |
Mark, nonspacing combining |
Mc |
Mark, spacing combining |
Me |
Mark, enclosing combining |
M |
Mark, all diacritic |
Nd |
Number, decimal digit |
Nl |
Number, letterlike |
No |
Number, other |
N |
Number, all |
Pc |
Punctuation, connector |
Pd |
Punctuation, dash |
Ps |
Punctuation, opening mark |
Pe |
Punctuation, closing mark |
Pi |
Punctuation, initial quote mark |
Pf |
Puntuation, final quote mark |
Po |
Punctuation, other |
P |
Punctuation, all |
Sm |
Symbol, math |
Sc |
Symbol, currency |
Sk |
Symbol, modifier |
So |
Symbol, other |
S |
Symbol, all |
Zs |
Separator, space |
Zl |
Separator, line |
Zp |
Separator, paragraph |
Z |
Separator, all |
Cc |
Control code |
Cf |
Format control character |
Cs |
Surrogate code point |
Co |
Private-use character |
Cn |
Unassigned |
C |
Control characters, all |
For named character set blocks (e.g., Cyrillic), search for "supported named blocks" in the MSDN Library.
Regular expression operations
Class: System.Text.RegularExpressions.Regex
Pattern matching with Regex objects
To initialize with |
Use constructor |
Regular exp |
Regex(String) |
+ options |
Regex(String,RegexOptions) |
+ time-out |
Regex(String,RegexOptions,TimeSpan) |
Pattern matching with static methods
Use an overload of a method below to supply the regular expression and the text you want to search.
Finding and replacing matched patterns
To |
Use method |
Validate match |
Regex.IsMatch |
Retrieve single match |
Regex.Match (first) ; Match.NextMatch (next) |
Retrieve all matches |
Regex.Matches |
Replace match |
Regex.Replace |
Divide text |
Regex.Split |
Handle char escapes |
Regex.Escape ; Regex.Unescape |
Getting info about regular expression patterns
To get |
Use Regex API |
Group names |
GetGroupNames ; GetGroupNameFromNumber |
Group numbers |
GetGroupNumbers ; GetGroupNumberFromName |
Expression |
ToString |
Options |
Options |
Time-out |
MatchTimeOut |
Cache size |
CacheSize |
Direction |
RightToLeft |