Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8
  • .NET 7.0 (C#)
  • Rust
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests

Tools

Sponsors
There are currently no sponsors. Become a sponsor today!
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression
No Match

r'
'
gm

Test String

Code Generator

Generated Code

using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string pattern = @"(?sm)span class=\'Finish F(\d{1,2}).*?<td style=""text-align:center"">(\d{1,2}e*).*?target=""_blank"">(.+?)</a>.*?<td class=\'trainer\'>.*?target=""_blank"">(.+?)</a>.*?<td class=\'jockey\'>.*?<span class=\'Hilite\'>(.+?)</span></a>.*?<td style=""text-align:center"">(.*?)</td>.*?<td style=""text-align:center"">(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>"; string input = @"<!-- start of races --> <a name=""Race1""></a><div class=""race-title-spacer""></div> <table width=""750"" border=""0"" cellspacing=""0"" cellpadding=""5"" class=""race-title""> <tr> <th><span>Race 1 - 1:50PM PEEL VALLEY TYRES - CG&E MAIDEN PLATE (1200 METRES)</span> <span class=""localtimedisplayed"">Times displayed in local time of Race Meeting</span> </th> </tr> <tr> <td> <b>Of $22,000.1st $11,200, 2nd $3,900, 3rd $2,100, 4th $1,100, 5th $720, 6th $540, 7th $500, 8th $500, 9th $500, 10th $500, Equine Welfare Fund $220, Jockey Welfare Fund $220. </b><br>Maiden, Set Weights, Colts, Geldings and Entires, Apprentices can claim.<br>BOBS Bonus Available Up To $9625<br><br><b>Track Name:</b> Main <b>Track Type:</b> Turf <b>Track Condition:</b> Good 3 <b>Time:</b> 1:10.66 <b>Last 600m:</b> 0:36.42 <b>Timing Method:</b> Electronic </td> </tr> </table> <br> <table width=""750"" border=""0"" cellpadding=""3"" cellspacing=""0"" class=""race-strip-fields""> <tr> <th class=""no"">Color</th> <th style=""text-align:center"" width=""5%"">Finish</th> <th style=""text-align:center"" width=""5%"">No.</th> <th width=""20%"">Horse</th> <th width=""19%"">Trainer</th> <th width=""20%"">Jockey</th> <th style=""text-align:center"" width=""6%"">Margin</th> <th style=""text-align:center"" width=""2%"">Bar.</th> <th width=""12%"">Weight</th> <th width=""5%"">Penalty</th> <th width=""15%"">Starting Price</th> </tr> <tr class='EvenRow'> <td><img class=""minimizeStyle"" src=""https://www.racingaustralia.horse/JockeySilks/34223.png"" /></td> <td style=""text-align:center""><span class='Finish F1'>1</span></td> <!-- <td><img class=""minimizeStyle"" onmouseover=""showBigImage(this);"" onmouseout=""showSmallImage(this);"" src=""https://www.racingaustralia.horse/JockeySilks/34223.png"" /></td> --> <td style=""text-align:center"">1</td> <td class='horse'><a class='GreenLink' href=""../InteractiveForm/HorseFullForm.aspx?horsecode=NTU2NjQ1OTA4MA%3d%3d&src=horseform&raceentry=MTI3NDc0NjUzMzA%3d"" target=""_blank"">AKECHETA</a> <span style=""float:right""></span></td> <td class='trainer'><a class='GreenLink' href=""../InteractiveForm/TrainerLastRuns.aspx?trainercode=NDE0NjM4Mjgw&trainername=Melanie+O%27Gorman"" target=""_blank"">Melanie O'Gorman</a></td> <td class='jockey'><a class='GreenLink' href=""../InteractiveForm/JockeyLastRuns.aspx?jockeycode=MjM3MTA3MTA%3d"" target=""_blank""><span class='Hilite'>Andrew Gibbons</span></a></td> <td style=""text-align:center""></td> <td style=""text-align:center"">7</td> <td>59kg</td> <td></td> <td>$1.40F</td> </tr> <tr class='OddRow'> <td><img class=""minimizeStyle"" src=""https://www.racingaustralia.horse/JockeySilks/43103.png"" /></td> <td style=""text-align:center""><span class='Finish F2'>2</span></td> <!-- <td><img class=""minimizeStyle"" onmouseover=""showBigImage(this);"" onmouseout=""showSmallImage(this);"" src=""https://www.racingaustralia.horse/JockeySilks/43103.png"" /></td> --> <td style=""text-align:center"">5</td> <td class='horse'><a class='GreenLink' href=""../InteractiveForm/HorseFullForm.aspx?horsecode=MTEyMjI1NjYyMA%3d%3d&src=horseform&raceentry=MTI3NDk2NDg3MDA%3d"" target=""_blank"">KENNYWYN</a> <span style=""float:right""></span></td> <td class='trainer'><a class='GreenLink' href=""../InteractiveForm/TrainerLastRuns.aspx?trainercode=MTkzMDczNDA%3d&trainername=Les+Roberts"" target=""_blank"">Les Roberts</a></td> <td class='jockey'><a class='GreenLink' href=""../InteractiveForm/JockeyLastRuns.aspx?jockeycode=MjQ3NDk2NzA%3d"" target=""_blank""><span class='Hilite'>Michael Squires</span></a></td> <td style=""text-align:center"">1.91L</td> <td style=""text-align:center"">5</td> <td>59kg</td> <td></td> <td>$8.50</td> </tr> <tr class='EvenRow'> <td><img class=""minimizeStyle"" src=""https://www.racingaustralia.horse/JockeySilks/61483.png"" /></td> <td style=""text-align:center""><span class='Finish F3'>3</span></td> <!-- <td><img class=""minimizeStyle"" onmouseover=""showBigImage(this);"" onmouseout=""showSmallImage(this);"" src=""https://www.racingaustralia.horse/JockeySilks/61483.png"" /></td> --> <td style=""text-align:center"">4</td> <td class='horse'><a class='GreenLink' href=""../InteractiveForm/HorseFullForm.aspx?horsecode=NTU2Mzk3NjAxMA%3d%3d&src=horseform&raceentry=MTI3NDkxMTcwMTA%3d"" target=""_blank"">JOHN PAUL</a> <span style=""float:right""></span></td> <td class='trainer'><a class='GreenLink' href=""../InteractiveForm/TrainerLastRuns.aspx?trainercode=MjI5MzI1MTc4NjA%3d&trainername=Craig+Clegg"" target=""_blank"">Craig Clegg</a></td> <td class='jockey'><a class='GreenLink' href=""../InteractiveForm/JockeyLastRuns.aspx?jockeycode=ODMxMDE3MDQw"" target=""_blank""><span class='Hilite'>Ms Belinda Hodder</span></a></td> <td style=""text-align:center"">1.92L</td> <td style=""text-align:center"">3</td> <td>59kg</td> <td></td> <td>$26</td> </tr> <tr class='OddRow'> <td><img class=""minimizeStyle"" src=""https://www.racingaustralia.horse/JockeySilks/9041.png"" /></td> <td style=""text-align:center""><span class='Finish F4'>4</span></td> <!-- <td><img class=""minimizeStyle"" onmouseover=""showBigImage(this);"" onmouseout=""showSmallImage(this);"" src=""https://www.racingaustralia.horse/JockeySilks/9041.png"" /></td> --> <td style=""text-align:center"">8</td> <td class='horse'><a class='GreenLink' href=""../InteractiveForm/HorseFullForm.aspx?horsecode=NTU5MjQxNDIxMA%3d%3d&src=horseform&raceentry=MTI3NDcxMTAxMzA%3d"" target=""_blank"">MICK&rsquo;S REGRET</a> <span style=""float:right""><img alt='BOBS Bonus Scheme' title='BOBS Bonus Scheme' src='/design/images/BonusLogos/BOBS.png' style='vertical-align:middle;' /></span></td> <td class='trainer'><a class='GreenLink' href=""../InteractiveForm/TrainerLastRuns.aspx?trainercode=MjIyMDY2NjA%3d&trainername=Sue+Grills"" target=""_blank"">Sue Grills</a></td> <td class='jockey'><a class='GreenLink' href=""../InteractiveForm/JockeyLastRuns.aspx?jockeycode=ODgzMTc4MTYw"" target=""_blank""><span class='Hilite'>Ms Rachael Murray</span></a></td> <td style=""text-align:center"">3.63L</td> <td style=""text-align:center"">8</td> <td>58.5kg</td> <td></td> <td>$15</td> </tr> <tr class='EvenRow'> <td><img class=""minimizeStyle"" src=""https://www.racingaustralia.horse/JockeySilks/61334.png"" /></td> <td style=""text-align:center""><span class='Finish F5'>5</span></td> <!-- <td><img class=""minimizeStyle"" onmouseover=""showBigImage(this);"" onmouseout=""showSmallImage(this);"" src=""https://www.racingaustralia.horse/JockeySilks/61334.png"" /></td> --> <td style=""text-align:center"">9</td> <td class='horse'><a class='GreenLink' href=""../InteractiveForm/HorseFullForm.aspx?horsecode=NTU4Mzg0MTY4MA%3d%3d&src=horseform&raceentry=MTI3NDMwMjMxMTA%3d"" target=""_blank"">PATAGONIAN</a> <span style=""float:right""><img alt='BOBS Bonus Scheme' title='BOBS Bonus Scheme' src='/design/images/BonusLogos/BOBS.png' style='vertical-align:middle;' /></span></td> <td class='trainer'><a class='GreenLink' href=""../InteractiveForm/TrainerLastRuns.aspx?trainercode=MTI5MzU5NDA%3d&trainername=Paul+Perry"" target=""_blank"">Paul Perry</a></td> <td class='jockey'><a class='GreenLink' href=""../InteractiveForm/JockeyLastRuns.aspx?jockeycode=OTQzODc1MTgw"" target=""_blank""><span class='Hilite'>Travis Wolfgram</span></a></td> <td style=""text-align:center"">5.83L</td> <td style=""text-align:center"">6</td> <td>58.5kg</td> <td></td> <td>$6</td> </tr> <tr class='OddRow'> <td><img class=""minimizeStyle"" src=""https://www.racingaustralia.horse/JockeySilks/8949.png"" /></td> <td style=""text-align:center""><span class='Finish F6'>6</span></td> <!-- <td><img class=""minimizeStyle"" onmouseover=""showBigImage(this);"" onmouseout=""showSmallImage(this);"" src=""https://www.racingaustralia.horse/JockeySilks/8949.png"" /></td> --> <td style=""text-align:center"">3</td> <td class='horse'><a class='GreenLink' href=""../InteractiveForm/HorseFullForm.aspx?horsecode=NTU4OTY0ODA5MA%3d%3d&src=horseform&raceentry=MTI3NDk1Mjc3MTA%3d"" target=""_blank"">CHEROKEE (NZ)</a> <span style=""float:right""></span></td> <td class='trainer'><a class='GreenLink' href=""../InteractiveForm/TrainerLastRuns.aspx?trainercode=MjIyMDY2NjA%3d&trainername=Sue+Grills"" target=""_blank"">Sue Grills</a></td> <td class='jockey'><a class='GreenLink' href=""../InteractiveForm/JockeyLastRuns.aspx?jockeycode=NTU4NzI2NjAzMA%3d%3d"" target=""_blank""><span class='Hilite'>Ms Wendy Peel</span><span class='apprentice-claim'> (a1.5/50kg)</span></a></td> <td style=""text-align:center"">6.4L</td> <td style=""text-align:center"">4</td> <td>59kg (cd 57.5kg)</td> <td></td> <td>$41</td> </tr> <tr class='EvenRow'> <td><img class=""minimizeStyle"" src=""https://www.racingaustralia.horse/JockeySilks/8544.png"" /></td> <td style=""text-align:center""><span class='Finish F7'>7</span></td> <!-- <td><img class=""minimizeStyle"" onmouseover=""showBigImage(this);"" onmouseout=""showSmallImage(this);"" src=""https://www.racingaustralia.horse/JockeySilks/8544.png"" /></td> --> <td style=""text-align:center"">10</td> <td class='horse'><a class='GreenLink' href=""../InteractiveForm/HorseFullForm.aspx?horsecode=NTU5MjIyNjYyMA%3d%3d&src=horseform&raceentry=MTI3NDcyODQ0MDA%3d"" target=""_blank"">TONOSAMA</a> <span style=""float:right""></span></td> <td class='trainer'><a class='GreenLink' href=""../InteractiveForm/TrainerLastRuns.aspx?trainercode=MTk2MTM3MDA%3d&trainername=Mack+Griffith"" target=""_blank"">Mack Griffith</a></td> <td class='jockey'><a class='GreenLink' href=""../InteractiveForm/JockeyLastRuns.aspx?jockeycode=MjMzMDIyMzA%3d"" target=""_blank""><span class='Hilite'>Grant Buckley</span></a></td> <td style=""text-align:center"">8.24L</td> <td style=""text-align:center"">1</td> <td>58.5kg</td> <td></td> <td>$15</td> </tr> <tr class='OddRow'> <td><img class=""minimizeStyle"" src=""https://www.racingaustralia.horse/JockeySilks/69256.png"" /></td> <td style=""text-align:center""><span class='Finish F8'>8</span></td> <!-- <td><img class=""minimizeStyle"" onmouseover=""showBigImage(this);"" onmouseout=""showSmallImage(this);"" src=""https://www.racingaustralia.horse/JockeySilks/69256.png"" /></td> --> <td style=""text-align:center"">2</td> <td class='horse'><a class='GreenLink' href=""../InteractiveForm/HorseFullForm.aspx?horsecode=NTU2ODE3MDcwMA%3d%3d&src=horseform&raceentry=MTI3NDg2Njg1NzA%3d"" target=""_blank"">BOUNDARY RYDER</a> <span style=""float:right""></span></td> <td class='trainer'><a class='GreenLink' href=""../InteractiveForm/TrainerLastRuns.aspx?trainercode=MjE3ODI2NDA%3d&trainername=Ruth+Cooper"" target=""_blank"">Ruth Cooper</a></td> <td class='jockey'><a class='GreenLink' href=""../InteractiveForm/JockeyLastRuns.aspx?jockeycode=OTQwOTA1OTMw"" target=""_blank""><span class='Hilite'>Vad Bolozhinskyi</span></a></td> <td style=""text-align:center"">9.23L</td> <td style=""text-align:center"">2</td> <td>59kg</td> <td></td> <td>$91</td> </tr> <tr class='EvenRow Scratched'> <td><img class=""minimizeStyle"" src=""https://www.racingaustralia.horse/JockeySilks/8343.png"" /></td> <td></td> <!-- <td><img class=""minimizeStyle"" onmouseover=""showBigImage(this);"" onmouseout=""showSmallImage(this);"" src=""https://www.racingaustralia.horse/JockeySilks/8343.png"" /></td> --> <td style=""text-align:center"">6</td> <td class='horse'><a class='GreenLink' href=""../InteractiveForm/HorseFullForm.aspx?horsecode=NTU4MjA1NzkxMA%3d%3d&src=horseform&raceentry=MTI3NTA5NTQwNjA%3d"" target=""_blank"">COMES &rsquo;N&rsquo; GOES</a> <span style=""float:right""><img alt='BOBS Bonus Scheme' title='BOBS Bonus Scheme' src='/design/images/BonusLogos/BOBS.png' style='vertical-align:middle;' /></span></td> <td class='trainer'><a class='GreenLink' href=""../InteractiveForm/TrainerLastRuns.aspx?trainercode=ODIzODgzMDcw&trainername=Luke+A+Thomas"" target=""_blank"">Luke A Thomas</a></td> <td class='jockey'><a class='GreenLink' href=""../InteractiveForm/JockeyLastRuns.aspx?jockeycode=MA%3d%3d"" target=""_blank""></a></td> <td style=""text-align:center""></td> <td style=""text-align:center"">0</td> <td></td> <td></td> <td></td> </tr> <tr class='OddRow Scratched'> <td><img class=""minimizeStyle"" src=""https://www.racingaustralia.horse/JockeySilks/80013.png"" /></td> <td></td> <!-- <td><img class=""minimizeStyle"" onmouseover=""showBigImage(this);"" onmouseout=""showSmallImage(this);"" src=""https://www.racingaustralia.horse/JockeySilks/80013.png"" /></td> --> <td style=""text-align:center"">7</td> <td class='horse'><a class='GreenLink' href=""../InteractiveForm/HorseFullForm.aspx?horsecode=NTU4ODIxMDY0MA%3d%3d&src=horseform&raceentry=MTI3NDkwODgxNTA%3d"" target=""_blank"">ENSEGUIDA</a> <span style=""float:right""><img alt='BOBS Bonus Scheme' title='BOBS Bonus Scheme' src='/design/images/BonusLogos/BOBS.png' style='vertical-align:middle;' /></span></td> <td class='trainer'><a class='GreenLink' href=""../InteractiveForm/TrainerLastRuns.aspx?trainercode=ODQzOTc3NDAw&trainername=Nathan+Doyle"" target=""_blank"">Nathan Doyle</a></td> <td class='jockey'><a class='GreenLink' href=""../InteractiveForm/JockeyLastRuns.aspx?jockeycode=MjMxMDE0NjU0MTA%3d"" target=""_blank""><span class='Hilite'>Ashley Morgan</span></a></td> <td style=""text-align:center""></td> <td style=""text-align:center"">0</td> <td></td> <td></td> <td></td> </tr> </table>"; RegexOptions options = RegexOptions.Multiline; foreach (Match m in Regex.Matches(input, pattern, options)) { Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index); } } }

Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx