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

/
/
gm

Test String

Code Generator

Generated Code

using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string pattern = @"<div\sid=\""olpProduct[\s\S]*?<div[\s\S]*?<div[\s\S]*?<a\shref=\""[\s\S]*?\/\/www.amazon.com\/[\s\S]*?\/[\s\S]*?\/(.*?)\/ref=olp"; string input = @"<div id=""olpProduct"" class=""a-section a-spacing-none""> <div class=""a-section a-spacing-mini""> <div class=""a-section a-spacing-mini""> ‹ <a href=""https://www.amazon.com/Keds-Womens-Chillax-Laceless-Sneaker/dp/B00MC3R3M6/ref=olp_product_details?_encoding=UTF8&amp;me="" id=""olpDetailPageLink"">Return to product information</a> <i class=""a-icon a-icon-text-separator"" role=""img""></i> Every purchase on Amazon.com is protected by an <a href=""/gp/help/customer/display.html/ref=olp_wa_1?ie=UTF8&amp;nodeId=537868&amp;pop-up=1"" id=""olpAZGuarantee"" target=""AmazonHelp"" onclick=""return amz_js_PopWin('/gp/help/customer/display.html/ref=olp_wa_1?ie=UTF8&amp;nodeId=537868&amp;pop-up=1','AmazonHelp','width=400,height=400,resizable=1,scrollbars=1,toolbar=1,status=1');"">A-to-z guarantee</a>. <i class=""a-icon a-icon-text-separator"" role=""img""></i> Feedback on this page? <a class=""a-link-normal olpFeedbackLink"" href=""/forms/33ec5bb5-b0aa-4730-9bba-9b346c8d2499""> Tell us what you think </a> </div> <div class=""a-fixed-left-grid a-spacing-base""><div class=""a-fixed-left-grid-inner"" style=""padding-left:170px""> <div id=""olpProductImage"" class=""a-text-center a-fixed-left-grid-col a-col-left"" style=""width:170px;margin-left:-170px;float:left;""> <a class=""a-link-normal"" href=""https://www.amazon.com/Keds-Womens-Chillax-Laceless-Sneaker/dp/B00MC3R3M6/ref=olp_product_details?_encoding=UTF8&amp;me=""> <img alt=""Return to product information"" src=""https://images-na.ssl-images-amazon.com/images/I/41p2f8xA8TL._SS160_.jpg""> </a> </div> <div id=""olpProductDetails"" class=""a-fixed-left-grid-col a-col-right"" style=""padding-left:0%;float:left;""> <h1 class=""a-size-large a-spacing-none"" role=""main""> <div class=""a-section a-spacing-none olpSubHeadingSection""> <span class=""a-size-base a-color-secondary""> </span> </div> Keds Women's Chillax Washed Laceless Slip-On Sneaker, Taupe, 8 M US </h1> <div id=""olpProductByline"" class=""a-section a-spacing-mini""> by Keds </div> <div class=""a-section a-spacing-small""> <span class=""offerListingPageB00MC3R3M6""> <span class=""a-declarative"" data-action=""a-popover"" data-a-popover=""{&quot;closeButton&quot;:&quot;false&quot;,&quot;max-width&quot;:&quot;700&quot;,&quot;position&quot;:&quot;triggerBottom&quot;,&quot;url&quot;:&quot;/review/widgets/average-customer-review/popover/ref=acr_offerlistingpage_popover?ie=UTF8&amp;asin=B00MC3R3M6&amp;contextId=offerListingPage&amp;ref=acr_offerlistingpage_popover&quot;}""> <a href=""javascript:void(0)"" class=""a-popover-trigger a-declarative""> </a><a class=""a-link-normal a-text-normal"" href=""https://www.amazon.com/product-reviews/B00MC3R3M6/ref=acr_offerlistingpage_text?ie=UTF8&amp;showViewpoints=1""> <i class=""a-icon a-icon-star a-star-4-5""><span class=""a-icon-alt"">4.3 out of 5 stars</span></i> </a> <i class=""a-icon a-icon-popover""></i> </span> <span class=""a-letter-space""></span> <span class=""a-size-small""> <a class=""a-link-normal"" href=""https://www.amazon.com/product-reviews/B00MC3R3M6/ref=acr_offerlistingpage_text?ie=UTF8&amp;showViewpoints=1""> 1,015 customer reviews </a> </span> </span> <i class=""a-icon a-icon-text-separator"" role=""img""></i> <style type=""text/css""> #auiswfText:hover, .emailImg:hover, .tafSocial:hover{ text-decoration : none !important; } #tellafriendAUI .emailtext, #tellafriendAUI .emailImg, #tellafriendAUI .tafSocial { padding : 0px !important; margin : 0px !important; text-decoration : none !important; } </style> <span id=""tellafriendAUI""> <span class=""a-declarative"" data-action=""a-modal"" data-a-modal=""{&quot;width&quot;:450,&quot;popoverLabel&quot;:&quot;Share this via Email&quot;,&quot;name&quot;:&quot;taf-aui&quot;,&quot;url&quot;:&quot;/gp/taf/share.html/ref=cm_sw_p_view_ol_4CVhCbJV9Y2JE?ie=UTF8&amp;ASIN=B00MC3R3M6&amp;action=share&amp;contentID=B00MC3R3M6&amp;contentName=offer%20listing%20page&amp;contentType=offer_page&amp;contentURI=%2Fgp%2Foffer-listing%2FB00MC3R3M6&amp;emailTemplate=%2Fgp%2Fpdp%2Ftaf%2Femail%2Fshare-offer-listing-page&amp;placementID=ol_4CVhCbJV9Y2JE&amp;ref=cm_sw_p_view_ol_4CVhCbJV9Y2JE&amp;showSocialSites=1&amp;site=email&amp;tafAUI=1&amp;titleText=Amazon.com%3A%20Buying%20Choices%3A%20Keds%20Women%27s%20Chillax%20Washed%20Laceless%20Slip-On%20Sneaker%2C%20Taupe%2C%208%20M%20US&amp;view=popup&quot;,&quot;ajaxFailMsg&quot;:&quot;Sorry, content is not available. &quot;,&quot;header&quot;:&quot;Share this via Email&quot;,&quot;cache&quot;:&quot;false&quot;}"" id=""swfDeclarative""> <a id=""auiswfText"" class=""a-link-normal emailtext"" title=""Share via e-mail"" href=""/gp/taf/share.html/ref=cm_sw_l_view_ol_4CVhCbJV9Y2JE?ie=UTF8&amp;ASIN=B00MC3R3M6&amp;action=share&amp;contentID=B00MC3R3M6&amp;contentName=offer%20listing%20page&amp;contentType=offer_page&amp;contentURI=%2Fgp%2Foffer-listing%2FB00MC3R3M6&amp;emailTemplate=%2Fgp%2Fpdp%2Ftaf%2Femail%2Fshare-offer-listing-page&amp;placementID=ol_4CVhCbJV9Y2JE&amp;ref=cm_sw_l_view_ol_4CVhCbJV9Y2JE&amp;showSocialSites=1&amp;site=email&amp;tafAUI=1&amp;titleText=Amazon.com%3A%20Buying%20Choices%3A%20Keds%20Women%27s%20Chillax%20Washed%20Laceless%20Slip-On%20Sneaker%2C%20Taupe%2C%208%20M%20US&amp;view=standalone""> <span class=""shareTextAUI"">Share</span><span class=""a-letter-space""></span> </a> <a id=""auiSwfEmail"" class=""a-link-normal emailImg"" title=""Share via e-mail"" href=""#""> <i class=""a-icon a-icon-share-email"" role=""img""></i><span class=""a-letter-space""></span> </a> </span> <a id=""auiSwfFb"" class=""a-link-normal tafSocial"" title=""Share on Facebook"" href=""/gp/taf/share.html/ref=fa?ie=UTF8&amp;=&amp;ASIN=B00MC3R3M6&amp;action=share&amp;contentID=B00MC3R3M6&amp;contentName=offer%20listing%20page&amp;contentType=offer_page&amp;contentURI=%2Fgp%2Foffer-listing%2FB00MC3R3M6&amp;imageURL=&amp;placementID=ol&amp;reftagSuffix=&amp;site=facebook&amp;titleText=Amazon.com%3A%20Buying%20Choices%3A%20Keds%20Women%27s%20Chillax%20Washed%20Laceless%20Slip-On%20Sneaker%2C%20Taupe%2C%208%20M%20US""> <span class=""windowParams"" data-network=""facebook"" data-height=""400"" data-width=""700""></span> <i class=""a-icon a-icon-share-facebook"" role=""img""></i><span class=""a-letter-space""></span> </a> <a id=""auiSwfTw"" class=""a-link-normal tafSocial"" title=""Share on Twitter"" href=""/gp/taf/share.html/ref=tw?ie=UTF8&amp;=&amp;ASIN=B00MC3R3M6&amp;action=share&amp;contentID=B00MC3R3M6&amp;contentName=offer%20listing%20page&amp;contentType=offer_page&amp;contentURI=%2Fgp%2Foffer-listing%2FB00MC3R3M6&amp;imageURL=&amp;placementID=ol&amp;reftagSuffix=&amp;site=twitter&amp;titleText=Amazon.com%3A%20Buying%20Choices%3A%20Keds%20Women%27s%20Chillax%20Washed%20Laceless%20Slip-On%20Sneaker%2C%20Taupe%2C%208%20M%20US""> <span class=""windowParams"" data-network=""twitter"" data-height=""400"" data-width=""700""></span> <i class=""a-icon a-icon-share-twitter"" role=""img""></i><span class=""a-letter-space""></span> </a> </span> <script language=""JavaScript"" type=""text/JavaScript""> P.when('A','jQuery').execute(function(A,$) { $('.tafSocial').unbind('click').click(function() { var windowParams = $(this).children('.windowParams'); var height = windowParams.data(""height""); var width = windowParams.data(""width""); window.open(this.href, ""_blank"", ""location=yes,width="" + width +"",height="" + height); return false; }); A.on.load(function () { var hashValue = window.location.hash; var hashIndex; var swfHashValue = ""_swftext_Swf""; hashIndex = hashValue.indexOf(swfHashValue); if (hashValue != "" && hashIndex > -1 && typeof(window.swfPopUpShown) === 'undefined') { $(""#auiswfText"").click(); window.swfPopUpShown = 1; } }); }); </script> </div> <div id=""variationsTwister"" class=""a-section a-spacing-mini""> <div class=""a-section a-spacing-micro""> <span class=""a-size-base"">Size:</span> <span class=""a-size-base a-text-bold""></span> </div> <span class=""a-dropdown-container""><select name="" autocomplete=""off"" data-a-native-class=""olpTwisterDropdown"" tabindex=""-1"" class=""a-native-dropdown a-spacing-small olpTwisterDropdown""> <option value=""/gp/offer-listing/B00NNA39IE/ref=olp_twister_all?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=all""> Lowest offer for each </option> <option value=""/gp/offer-listing/B00MC3QSKO/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=0""> 5 M US </option> <option value=""/gp/offer-listing/B00MC3QU1G/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=1""> 5.5 M US </option> <option value=""/gp/offer-listing/B00MC3QX72/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=2""> 6 M US </option> <option value=""/gp/offer-listing/B00MC3QYQC/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=3""> 6.5 M US </option> <option value=""/gp/offer-listing/B00MC3R0PQ/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=4""> 7 M US </option> <option value=""/gp/offer-listing/B00MC3R23Q/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=5""> 7.5 M US </option> <option value=""/gp/offer-listing/B00MC3R3M6/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=6"" selected=""> 8 M US </option> <option value=""/gp/offer-listing/B00MC3R6LO/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=7""> 8.5 M US </option> <option value=""/gp/offer-listing/B00MC3R9IY/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=8""> 9 M US </option> <option value=""/gp/offer-listing/B00MC3RBE6/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=9""> 9.5 M US </option> <option value=""/gp/offer-listing/B00MC3RCPY/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=10""> 10 M US </option> </select><span tabindex=""-1"" id=""olpTwisterDropdownAUI"" class=""a-button a-button-dropdown a-button-small a-spacing-small"" style=""min-width: 0.583333%;""><span class=""a-button-inner""><span class=""a-button-text a-declarative"" data-action=""a-dropdown-button"" role=""button"" tabindex=""0"" aria-hidden=""true""><span class=""a-dropdown-prompt""> 8 M US </span></span><i class=""a-icon a-icon-dropdown""></i></span></span></span> <div class=""a-section a-spacing-micro""> <span class=""a-size-base"">Color:</span> <span class=""a-size-base a-text-bold"">Taupe</span> </div> <ul class=""a-unordered-list a-nostyle a-button-list a-declarative a-button-toggle-group a-horizontal a-spacing-small"" role=""radiogroup"" data-action=""a-button-group""> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-normal a-button-thumbnail a-button-toggle"" id=""a-autoid-0""><span class=""a-button-inner""><a href=""/gp/offer-listing/B0002MB0DM/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=0&amp;mv_size_name=6"" class=""a-button-text"" role=""button"" id=""a-autoid-0-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/41jl1EwZjHL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </a></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-normal a-button-thumbnail a-button-toggle"" id=""a-autoid-1""><span class=""a-button-inner""><a href=""/gp/offer-listing/B005BFV1DO/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=1&amp;mv_size_name=6"" class=""a-button-text"" role=""button"" id=""a-autoid-1-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/41XqEgaqwtL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </a></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-normal a-button-thumbnail a-button-toggle"" id=""a-autoid-2""><span class=""a-button-inner""><a href=""/gp/offer-listing/B00MC3SFXW/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=2&amp;mv_size_name=6"" class=""a-button-text"" role=""button"" id=""a-autoid-2-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/41cNhnckTFL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </a></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-selected a-button-thumbnail a-button-toggle"" id=""a-autoid-3""><span class=""a-button-inner""><a href=""/gp/offer-listing/B00MC3R3M6/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=3&amp;mv_size_name=6"" class=""a-button-text"" role=""button"" id=""a-autoid-3-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/41p2f8xA8TL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </a></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-normal a-button-thumbnail a-button-toggle"" id=""a-autoid-4""><span class=""a-button-inner""><a href=""/gp/offer-listing/B011SBR9PS/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=4&amp;mv_size_name=6"" class=""a-button-text"" role=""button"" id=""a-autoid-4-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/311Xw94d26L._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </a></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-normal a-button-thumbnail a-button-toggle"" id=""a-autoid-5""><span class=""a-button-inner""><a href=""/gp/offer-listing/B07FYS34S4/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=5&amp;mv_size_name=6"" class=""a-button-text"" role=""button"" id=""a-autoid-5-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/41r4qvtmEkL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </a></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-normal a-button-thumbnail a-button-toggle"" id=""a-autoid-6""><span class=""a-button-inner""><a href=""/gp/offer-listing/B00MC3TVSK/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=6&amp;mv_size_name=6"" class=""a-button-text"" role=""button"" id=""a-autoid-6-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/31YEDbIcNwL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </a></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-normal a-button-thumbnail a-button-toggle"" id=""a-autoid-7""><span class=""a-button-inner""><a href=""/gp/offer-listing/B016W1Z1RC/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=7&amp;mv_size_name=6"" class=""a-button-text"" role=""button"" id=""a-autoid-7-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/41plM8TSFBL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </a></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-normal a-button-thumbnail a-button-toggle"" id=""a-autoid-8""><span class=""a-button-inner""><a href=""/gp/offer-listing/B0007L7WPS/ref=olp_twister_child?ie=UTF8&amp;mv_color_name=8&amp;mv_size_name=6"" class=""a-button-text"" role=""button"" id=""a-autoid-8-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/41NGM8gp7hL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </a></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-disabled a-button-thumbnail a-button-toggle"" id=""a-autoid-9""><span class=""a-button-inner""><input disabled=""disabled"" class=""a-button-input"" type=""submit"" aria-labelledby=""a-autoid-9-announce""><span class=""a-button-text"" aria-hidden=""true"" id=""a-autoid-9-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/41WBKxWvoLL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </span></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-disabled a-button-thumbnail a-button-toggle"" id=""a-autoid-10""><span class=""a-button-inner""><input disabled=""disabled"" class=""a-button-input"" type=""submit"" aria-labelledby=""a-autoid-10-announce""><span class=""a-button-text"" aria-hidden=""true"" id=""a-autoid-10-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/41ap6ahxMRL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </span></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-disabled a-button-thumbnail a-button-toggle"" id=""a-autoid-11""><span class=""a-button-inner""><input disabled=""disabled"" class=""a-button-input"" type=""submit"" aria-labelledby=""a-autoid-11-announce""><span class=""a-button-text"" aria-hidden=""true"" id=""a-autoid-11-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/41QD5K54hPL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </span></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-disabled a-button-thumbnail a-button-toggle"" id=""a-autoid-12""><span class=""a-button-inner""><input disabled=""disabled"" class=""a-button-input"" type=""submit"" aria-labelledby=""a-autoid-12-announce""><span class=""a-button-text"" aria-hidden=""true"" id=""a-autoid-12-announce""> <img alt="" src=""https://images-na.ssl-images-amazon.com/images/I/31qtQ78OWiL._SX35_SY35_CR,0,0,35,35_.jpg"" height=""35"" width=""35""> </span></span></span> </span></li> <li class=""a-spacing-mini""><span class=""a-list-item""> <span class=""a-button a-button-normal a-button-toggle"" id=""a-autoid-13""><span class=""a-button-inner""><a href=""/gp/offer-listing/B00NNA39IE/ref=olp_twister_all?ie=UTF8&amp;mv_color_name=all&amp;mv_size_name=6"" class=""a-button-text"" role=""button"" id=""a-autoid-13-announce""> Lowest offer for each </a></span></span> </span></li> </ul> </div> <div class=""twisterDivider""></div> </div> </div></div> </div> </div>"; 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