<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8"/>
    <title>FsRegEx
</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <meta name="description" content="Composable F# regular expressions."/>
    <meta name="author" content="Jack Fox"/>

    <script src="https://code.jquery.com/jquery-1.8.0.js"></script>
    <script src="https://code.jquery.com/ui/1.8.23/jquery-ui.js"></script>
    <script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script>
    <link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet"/>

    <link type="text/css" rel="stylesheet" href="/FsRegEx/content/style.css" />
    <script type="text/javascript" src="/FsRegEx/content/tips.js"></script>
    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <div class="container">
      <div class="masthead">
        <ul class="nav nav-pills pull-right">
          <li><a href="http://fsharp.org">fsharp.org</a></li>
          <li><a href="https://github.com/jackfoxy/FsRegEx">github page</a></li>
        </ul>
        <h3 class="muted"><a href="/FsRegEx/index.html">FsRegEx</a></h3>
      </div>
      <hr />
      <div class="row">
        <div class="span9" id="main">
          
<h1><a name="FsRegEx" class="anchor" href="#FsRegEx">FsRegEx</a></h1>
<p>The <code>FsRegEx</code> library provides composable F# functionality for nearly all the capabilites of the .NET <code>Regex</code> class, supporting uniform pipe forward <code>|&gt;</code> composability and all <code>Regex</code> features except timeouts. Optionally you can compose F# verbal expressions in natural language. Lazy evaluation ensures natural language composition imposes no performance penalty.</p>
<div class="row">
  <div class="span1"></div>
  <div class="span6">
    <div class="well well-small" id="nuget">
      The FsRegEx library can be <a href="https://nuget.org/packages/FsRegEx">installed from NuGet</a>:
      <pre>PM> Install-Package FsRegEx</pre>
    </div>
  </div>
  <div class="span1"></div>
</div>
<h2><a name="Introduction" class="anchor" href="#Introduction">Introduction</a></h2>
<p>The <code>FsRegEx</code> library brings a composable regular expression experience to F#.</p>
<ul>
<li><p>Composable functions representing all available <code>Regex</code> functionality (except timeouts) with the target input string uniformly the last parameter to better support pipe forward <code>|&gt;</code> composition and partial application.</p></li>
<li><p>Collections returned as F# arrays rather than <code>Regex</code> special collections for better composability (but sacrificing lazy match evaluation and timeout support).</p></li>
<li>
<p>Short-cut functions like <code>capture</code> on group name make common multi-step processes a single function.</p>
<ul>
<li><p><code>FsRegEx</code> - A composable F# wrapper type over <code>System.Text.RegularExpressions.Regex</code> for natural language regular expression composition.</p></li>
</ul>
</li>
<li><p><code>FsMatch</code> - A composable F# wrapper type over <code>System.Text.RegularExpressions.Match</code>.</p></li>
<li><p><code>FsGroup</code> - A composable F# wrapper type over <code>System.Text.RegularExpressions.Group</code>.</p></li>
<li><p>Basic functional operations on <code>FsRegEx</code> (<code>exists</code>, <code>fold</code>, <code>foldBack</code>, <code>iter</code>, and <code>map</code>), among other composable functions.</p></li>
<li>
<p><code>FsRegEx</code> speciall collections are returned as arrays. This does lose the advantange of lazy match evaluation the special collections provide.
The underlying object can always be returned from the wrapper.</p>
</li>
</ul>
<h2><a name="Better-F-Composition" class="anchor" href="#Better-F-Composition">Better F# Composition</a></h2>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l"> 1: </span>
<span class="l"> 2: </span>
<span class="l"> 3: </span>
<span class="l"> 4: </span>
<span class="l"> 5: </span>
<span class="l"> 6: </span>
<span class="l"> 7: </span>
<span class="l"> 8: </span>
<span class="l"> 9: </span>
<span class="l">10: </span>
<span class="l">11: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="k">open</span> <span class="id">FsRegEx</span>

<span class="k">let</span> <span onmouseout="hideTip(event, 'fs1', 1)" onmouseover="showTip(event, 'fs1', 1)" class="id">carRegExp</span> <span class="o">=</span> <span class="s">@&quot;(\w+)\s+(car)&quot;</span>

<span onmouseout="hideTip(event, 'fs2', 2)" onmouseover="showTip(event, 'fs2', 2)" class="fn">sprintf</span> <span class="s">&quot;</span><span class="pf">%s</span><span class="s"> </span><span class="pf">%s</span><span class="s"> </span><span class="pf">%s</span><span class="s">&quot;</span> <span class="s">&quot;One car&quot;</span> <span class="s">&quot;red car&quot;</span> <span class="s">&quot;blue car&quot;</span>
<span class="o">|&gt;</span> <span class="id">matches</span> <span onmouseout="hideTip(event, 'fs1', 3)" onmouseover="showTip(event, 'fs1', 3)" class="id">carRegExp</span>
<span class="o">|&gt;</span> <span onmouseout="hideTip(event, 'fs3', 4)" onmouseover="showTip(event, 'fs3', 4)" class="m">Array</span><span class="pn">.</span><span onmouseout="hideTip(event, 'fs4', 5)" onmouseover="showTip(event, 'fs4', 5)" class="id">iter</span><span class="pn">(</span><span class="k">fun</span> <span onmouseout="hideTip(event, 'fs5', 6)" onmouseover="showTip(event, 'fs5', 6)" class="id">m</span> <span class="k">-&gt;</span> <span onmouseout="hideTip(event, 'fs6', 7)" onmouseover="showTip(event, 'fs6', 7)" class="fn">printfn</span> <span class="s">&quot;</span><span class="pf">%s</span><span class="s">&quot;</span> <span onmouseout="hideTip(event, 'fs5', 8)" onmouseover="showTip(event, 'fs5', 8)" class="id">m</span><span class="pn">.</span><span class="id">Value</span><span class="pn">)</span>

<span class="c">// One car</span>
<span class="c">// red car</span>
<span class="c">// blue car</span>
</code></pre></td>
</tr>
</table>
<h2><a name="Short-cut-common-procedures-to-a-single-function" class="anchor" href="#Short-cut-common-procedures-to-a-single-function">Short-cut common procedures to a single function</a></h2>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l">1: </span>
<span class="l">2: </span>
<span class="l">3: </span>
<span class="l">4: </span>
<span class="l">5: </span>
<span class="l">6: </span>
<span class="l">7: </span>
<span class="l">8: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="k">let</span> <span onmouseout="hideTip(event, 'fs7', 9)" onmouseover="showTip(event, 'fs7', 9)" class="id">groupNumberRegExp</span> <span class="o">=</span> <span class="s">@&quot;COD(?&lt;GroupNumber&gt;[0-9]{3})END&quot;</span>
<span class="k">let</span> <span onmouseout="hideTip(event, 'fs8', 10)" onmouseover="showTip(event, 'fs8', 10)" class="id">groupNumberName</span> <span class="o">=</span> <span class="s">&quot;GroupNumber&quot;</span>

<span onmouseout="hideTip(event, 'fs2', 11)" onmouseover="showTip(event, 'fs2', 11)" class="fn">sprintf</span> <span class="s">&quot;</span><span class="pf">%s</span><span class="s">&quot;</span> <span class="s">&quot;COD123END&quot;</span>
<span class="o">|&gt;</span> <span class="id">capture</span> <span onmouseout="hideTip(event, 'fs7', 12)" onmouseover="showTip(event, 'fs7', 12)" class="id">groupNumberRegExp</span> <span onmouseout="hideTip(event, 'fs8', 13)" onmouseover="showTip(event, 'fs8', 13)" class="id">groupNumberName</span>
<span class="o">|&gt;</span> <span onmouseout="hideTip(event, 'fs6', 14)" onmouseover="showTip(event, 'fs6', 14)" class="fn">printfn</span> <span class="s">&quot;</span><span class="pf">%s</span><span class="s">&quot;</span>

<span class="c">// 123</span>
</code></pre></td>
</tr>
</table>
<h2><a name="Natural-Language-Regular-Expressions" class="anchor" href="#Natural-Language-Regular-Expressions">Natural Language Regular Expressions</a></h2>
<p>The library also provides the composable Verbal Expressions language for constructing simple regular expressions in a readable fashion.</p>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l"> 1: </span>
<span class="l"> 2: </span>
<span class="l"> 3: </span>
<span class="l"> 4: </span>
<span class="l"> 5: </span>
<span class="l"> 6: </span>
<span class="l"> 7: </span>
<span class="l"> 8: </span>
<span class="l"> 9: </span>
<span class="l">10: </span>
<span class="l">11: </span>
<span class="l">12: </span>
<span class="l">13: </span>
<span class="l">14: </span>
<span class="l">15: </span>
<span class="l">16: </span>
<span class="l">17: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="k">open</span> <span class="id">FsRegEx</span>
<span class="k">open</span> <span onmouseout="hideTip(event, 'fs9', 15)" onmouseover="showTip(event, 'fs9', 15)" class="id">System</span><span class="pn">.</span><span onmouseout="hideTip(event, 'fs10', 16)" onmouseover="showTip(event, 'fs10', 16)" class="id">Text</span><span class="pn">.</span><span onmouseout="hideTip(event, 'fs11', 17)" onmouseover="showTip(event, 'fs11', 17)" class="id">RegularExpressions</span>
<span class="k">open</span> <span class="id">VerbalExpressions</span>

<span class="k">let</span> <span onmouseout="hideTip(event, 'fs12', 18)" onmouseover="showTip(event, 'fs12', 18)" class="id">groupName</span> <span class="o">=</span>  <span class="s">&quot;GroupNumber&quot;</span>
 
<span class="id">FsRegEx</span><span class="pn">(</span><span class="pn">)</span>
<span class="o">|&gt;</span> <span class="id">add</span> <span class="s">&quot;COD&quot;</span>
<span class="o">|&gt;</span> <span class="id">beginCaptureNamed</span> <span onmouseout="hideTip(event, 'fs12', 19)" onmouseover="showTip(event, 'fs12', 19)" class="id">groupName</span>
<span class="o">|&gt;</span> <span class="id">any</span> <span class="s">&quot;0-9&quot;</span>
<span class="o">|&gt;</span> <span class="id">repeatPrevious</span> <span class="n">3</span>
<span class="o">|&gt;</span> <span class="id">endCapture</span>
<span class="o">|&gt;</span> <span class="id">then&#39;</span> <span class="s">&quot;END&quot;</span>
<span class="o">|&gt;</span> <span class="id">capture</span> <span class="s">&quot;COD123END&quot;</span> <span onmouseout="hideTip(event, 'fs12', 20)" onmouseover="showTip(event, 'fs12', 20)" class="id">groupName</span>
<span class="o">|&gt;</span> <span onmouseout="hideTip(event, 'fs6', 21)" onmouseover="showTip(event, 'fs6', 21)" class="fn">printfn</span> <span class="s">&quot;</span><span class="pf">%s</span><span class="s">&quot;</span>

<span class="c">// 123</span>
</code></pre></td>
</tr>
</table>
<p>A comparison of using Regex natively, and Verbal Expressions to retrieve the database parameter from a connection string:</p>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l"> 1: </span>
<span class="l"> 2: </span>
<span class="l"> 3: </span>
<span class="l"> 4: </span>
<span class="l"> 5: </span>
<span class="l"> 6: </span>
<span class="l"> 7: </span>
<span class="l"> 8: </span>
<span class="l"> 9: </span>
<span class="l">10: </span>
<span class="l">11: </span>
<span class="l">12: </span>
<span class="l">13: </span>
<span class="l">14: </span>
<span class="l">15: </span>
<span class="l">16: </span>
<span class="l">17: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="k">let</span> <span onmouseout="hideTip(event, 'fs13', 22)" onmouseover="showTip(event, 'fs13', 22)" class="id">TestConnString</span> <span class="o">=</span> 
    <span class="s">&quot;&quot;&quot;&lt;add name=&quot;MyConnString&quot; connectionString=&quot;Server=MyServer;Database=MyDatabase;User ID=me;Password=secret;Encrypt=True;TrustServerCertificate=True;Enlist=False;&quot; /&gt;&quot;&quot;&quot;</span>

<span class="k">let</span> <span onmouseout="hideTip(event, 'fs14', 23)" onmouseover="showTip(event, 'fs14', 23)" class="fn">databaseFromRegex</span> <span onmouseout="hideTip(event, 'fs15', 24)" onmouseover="showTip(event, 'fs15', 24)" class="id">connectionString</span> <span class="o">=</span>
        
    <span onmouseout="hideTip(event, 'fs16', 25)" onmouseover="showTip(event, 'fs16', 25)" class="rt">Regex</span><span class="pn">.</span><span onmouseout="hideTip(event, 'fs17', 26)" onmouseover="showTip(event, 'fs17', 26)" class="id">Match</span><span class="pn">(</span><span onmouseout="hideTip(event, 'fs15', 27)" onmouseover="showTip(event, 'fs15', 27)" class="id">connectionString</span><span class="pn">,</span> <span class="s">&quot;[dD]atabase=(?&lt;database&gt;.*?);&quot;</span><span class="pn">)</span><span class="pn">.</span><span class="id">Groups</span><span class="pn">.</span><span class="pn">[</span><span class="s">&quot;database&quot;</span><span class="pn">]</span><span class="pn">.</span><span class="id">Value</span>

<span class="k">let</span> <span onmouseout="hideTip(event, 'fs18', 28)" onmouseover="showTip(event, 'fs18', 28)" class="fn">databaseFromFsRegEx</span> <span onmouseout="hideTip(event, 'fs19', 29)" onmouseover="showTip(event, 'fs19', 29)" class="id">connectionString</span> <span class="o">=</span>

    <span class="id">FsRegEx</span><span class="pn">(</span><span class="pn">)</span>
    <span class="o">|&gt;</span> <span class="id">add</span> <span class="s">&quot;[dD]atabase=(?&lt;database&gt;.*?);&quot;</span>
    <span class="o">|&gt;</span> <span class="id">capture</span> <span onmouseout="hideTip(event, 'fs19', 30)" onmouseover="showTip(event, 'fs19', 30)" class="id">connectionString</span> <span class="s">&quot;database&quot;</span>

<span class="pn">(</span><span onmouseout="hideTip(event, 'fs14', 31)" onmouseover="showTip(event, 'fs14', 31)" class="fn">databaseFromRegex</span> <span onmouseout="hideTip(event, 'fs13', 32)" onmouseover="showTip(event, 'fs13', 32)" class="id">TestConnString</span><span class="pn">)</span> <span class="o">=</span> <span class="pn">(</span><span onmouseout="hideTip(event, 'fs18', 33)" onmouseover="showTip(event, 'fs18', 33)" class="fn">databaseFromFsRegEx</span> <span onmouseout="hideTip(event, 'fs13', 34)" onmouseover="showTip(event, 'fs13', 34)" class="id">TestConnString</span><span class="pn">)</span> 
<span class="o">|&gt;</span> <span onmouseout="hideTip(event, 'fs6', 35)" onmouseover="showTip(event, 'fs6', 35)" class="fn">printfn</span> <span class="s">&quot;</span><span class="pf">%b</span><span class="s">&quot;</span>

<span class="c">// true</span>
</code></pre></td>
</tr>
</table>
<p>This example shows the more verbose and descriptive Verbal Expressions:</p>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l"> 1: </span>
<span class="l"> 2: </span>
<span class="l"> 3: </span>
<span class="l"> 4: </span>
<span class="l"> 5: </span>
<span class="l"> 6: </span>
<span class="l"> 7: </span>
<span class="l"> 8: </span>
<span class="l"> 9: </span>
<span class="l">10: </span>
<span class="l">11: </span>
<span class="l">12: </span>
<span class="l">13: </span>
<span class="l">14: </span>
<span class="l">15: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="k">let</span> <span onmouseout="hideTip(event, 'fs20', 36)" onmouseover="showTip(event, 'fs20', 36)" class="fn">databaseFromVerboseFsRegEx</span> <span onmouseout="hideTip(event, 'fs19', 37)" onmouseover="showTip(event, 'fs19', 37)" class="id">connectionString</span> <span class="o">=</span>

    <span class="id">FsRegEx</span><span class="pn">(</span><span class="pn">)</span>
    <span class="o">|&gt;</span> <span class="id">anyOf</span> <span class="s">&quot;dD&quot;</span>
    <span class="o">|&gt;</span> <span class="id">then&#39;</span> <span class="s">&quot;atabase=&quot;</span>
    <span class="o">|&gt;</span> <span class="id">beginCaptureNamed</span> <span class="s">&quot;database&quot;</span>
    <span class="o">|&gt;</span> <span class="id">add</span> <span class="s">&quot;.*?&quot;</span>
    <span class="o">|&gt;</span> <span class="id">endCapture</span>
    <span class="o">|&gt;</span> <span class="id">then&#39;</span> <span class="s">&quot;;&quot;</span>
    <span class="o">|&gt;</span> <span class="id">capture</span> <span onmouseout="hideTip(event, 'fs19', 38)" onmouseover="showTip(event, 'fs19', 38)" class="id">connectionString</span> <span class="s">&quot;database&quot;</span>

<span class="pn">(</span><span onmouseout="hideTip(event, 'fs14', 39)" onmouseover="showTip(event, 'fs14', 39)" class="fn">databaseFromRegex</span> <span onmouseout="hideTip(event, 'fs13', 40)" onmouseover="showTip(event, 'fs13', 40)" class="id">TestConnString</span><span class="pn">)</span> <span class="o">=</span> <span class="pn">(</span><span onmouseout="hideTip(event, 'fs20', 41)" onmouseover="showTip(event, 'fs20', 41)" class="fn">databaseFromVerboseFsRegEx</span> <span onmouseout="hideTip(event, 'fs13', 42)" onmouseover="showTip(event, 'fs13', 42)" class="id">TestConnString</span><span class="pn">)</span> 
<span class="o">|&gt;</span> <span onmouseout="hideTip(event, 'fs6', 43)" onmouseover="showTip(event, 'fs6', 43)" class="fn">printfn</span> <span class="s">&quot;</span><span class="pf">%b</span><span class="s">&quot;</span>

<span class="c">// true</span>
</code></pre></td>
</tr>
</table>
<h2><a name="Documentation" class="anchor" href="#Documentation">Documentation</a></h2>
<p>FsRegEx comes with comprehensive API documentation and a tutorial.</p>
<ul>
<li><p><a href="reference/index.html">API Reference</a> contains documentation for all types, modules, and functions in the library.</p></li>
<li><p><a href="tutorial.html">F# Verbal Expressions Tutorial</a> contains further explanation of the natural language DSL syntax and many more usage examples.</p></li>
</ul>
<h2><a name="Versioning" class="anchor" href="#Versioning">Versioning</a></h2>
<p>FsRegEx adheres to <a href="http://semver.org/" title="Semantic Versioning">Semantic Versioning</a>. So long as the project is pre-1.0.0 minor versions may be breaking. Once the project reaches 1.0.0 minor enhancements will be backwards-compatible.</p>
<h2><a name="Contributing-and-copyright" class="anchor" href="#Contributing-and-copyright">Contributing and copyright</a></h2>
<p>FsRegEx is hosted on <a href="http://github.com/jackfoxy/FsRegEx">GitHub</a> where you can <a href="http://github.com/jackfoxy/FsRegEx/issues">report issues</a>, fork
the project, and submit pull requests, so long as pull requests:</p>
<ul>
<li>include excellent unit test coverage</li>
<li>include correct intellisense documentation</li>
<li>adhere to the concepts of composability</li>
</ul>
<p>FsRegEx is available under Public Domain license, which allows modification and
redistribution for both commercial and non-commercial purposes. For more information see the
<a href="http://github.com/jackfoxy/FsRegEx/blob/master/LICENSE.txt">License file</a> in the GitHub repository.</p>

<div class="tip" id="fs1">val carRegExp : string</div>
<div class="tip" id="fs2">val sprintf : format:Printf.StringFormat&lt;&#39;T&gt; -&gt; &#39;T</div>
<div class="tip" id="fs3">module Array<br /><br />from Microsoft.FSharp.Collections</div>
<div class="tip" id="fs4">val iter : action:(&#39;T -&gt; unit) -&gt; array:&#39;T [] -&gt; unit</div>
<div class="tip" id="fs5">val m : obj</div>
<div class="tip" id="fs6">val printfn : format:Printf.TextWriterFormat&lt;&#39;T&gt; -&gt; &#39;T</div>
<div class="tip" id="fs7">val groupNumberRegExp : string</div>
<div class="tip" id="fs8">val groupNumberName : string</div>
<div class="tip" id="fs9">namespace System</div>
<div class="tip" id="fs10">namespace System.Text</div>
<div class="tip" id="fs11">namespace System.Text.RegularExpressions</div>
<div class="tip" id="fs12">val groupName : string</div>
<div class="tip" id="fs13">val TestConnString : string</div>
<div class="tip" id="fs14">val databaseFromRegex : connectionString:string -&gt; string</div>
<div class="tip" id="fs15">val connectionString : string</div>
<div class="tip" id="fs16">Multiple items<br />type Regex =<br />&#160;&#160;new : pattern:string -&gt; Regex + 2 overloads<br />&#160;&#160;member GetGroupNames : unit -&gt; string[]<br />&#160;&#160;member GetGroupNumbers : unit -&gt; int[]<br />&#160;&#160;member GroupNameFromNumber : i:int -&gt; string<br />&#160;&#160;member GroupNumberFromName : name:string -&gt; int<br />&#160;&#160;member IsMatch : input:string -&gt; bool + 1 overload<br />&#160;&#160;member Match : input:string -&gt; Match + 2 overloads<br />&#160;&#160;member MatchTimeout : TimeSpan<br />&#160;&#160;member Matches : input:string -&gt; MatchCollection + 1 overload<br />&#160;&#160;member Options : RegexOptions<br />&#160;&#160;...<br /><br />--------------------<br />Regex(pattern: string) : Regex<br />Regex(pattern: string, options: RegexOptions) : Regex<br />Regex(pattern: string, options: RegexOptions, matchTimeout: System.TimeSpan) : Regex</div>
<div class="tip" id="fs17">Regex.Match(input: string, pattern: string) : Match<br />Regex.Match(input: string, pattern: string, options: RegexOptions) : Match<br />Regex.Match(input: string, pattern: string, options: RegexOptions, matchTimeout: System.TimeSpan) : Match</div>
<div class="tip" id="fs18">val databaseFromFsRegEx : connectionString:&#39;a -&gt; &#39;b</div>
<div class="tip" id="fs19">val connectionString : &#39;a</div>
<div class="tip" id="fs20">val databaseFromVerboseFsRegEx : connectionString:&#39;a -&gt; &#39;b</div>

        </div>
        <div class="span3">
          <img src="/FsRegEx/img/logo.png" alt="F# Project" style="width:150px;margin:10px" />  
            <ul class="nav nav-list" id="menu" style="margin-top: 20px;">
                <li class="nav-header">FsRegEx</li>
                <li><a href="/FsRegEx/index.html">Home page</a></li>
                <li class="divider"></li>
                <li><a href="http://nuget.org/packages/FsRegEx">Get Library via NuGet</a></li>
                <li><a href="https://github.com/jackfoxy/FsRegEx">Source Code on GitHub</a></li>
                <li><a href="/FsRegEx/license.html">License</a></li>
                <li><a href="/FsRegEx/release-notes.html">Release Notes</a></li>

                <li class="nav-header">Examples</li>
                <li><a href="/FsRegEx/matching.html">Matching</a></li>
                <li><a href="/FsRegEx/group.html">Match Groups</a></li>
                <li><a href="/FsRegEx/replacesplit.html">Replace and Split</a></li>
                <li><a href="/FsRegEx/capture.html">Capture</a></li>

                <li class="nav-header">Documentation</li>
                <li><a href="/FsRegEx/reference/index.html">API Reference</a></li>

                <li class="nav-header">More...</li>
                <li><a href="/FsRegEx/emailregex.html">On the Futility of Email Regex Validation</a></li>
                <li><a href="/FsRegEx/tutorial.html">F# Verbal Expressions Tutorial</a></li>
            </ul>
        </div>
      </div>
    </div>
    <a href="https://github.com/jackfoxy/FsRegEx"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png" alt="Fork me on GitHub"/></a>
  </body>
  </html>
