Skip to content

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


Comments

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