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

// include the latest version of the regex crate in your Cargo.toml extern crate regex; use regex::Regex; fn main() { let regex = Regex::new(r#"(?m)(?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>"#).unwrap(); let string = "<!-- 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>"; // result will be an iterator over tuples containing the start and end indices for each match in the string let result = regex.captures_iter(string); for mat in result { println!("{:?}", mat); } }

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 Rust, please visit: https://docs.rs/regex/latest/regex/