Sophie

Sophie

distrib > Mageia > 7 > i586 > media > core-release > by-pkgid > 016232f1d9a3f7bee85855d35a2bca58 > files > 104

elixir-doc-1.7.2-1.mga7.noarch.rpm

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="generator" content="ExDoc v0.19.1">
    <title>Regex – Elixir v1.7.2</title>
    <link rel="stylesheet" href="dist/app-240d7fc7e5.css" />
      <link rel="canonical" href="https://hexdocs.pm/elixir/v1.7/Regex.html" />
    <script src="dist/sidebar_items-cdf4e58b19.js"></script>
    
  </head>
  <body data-type="modules">
    <script>try { if(localStorage.getItem('night-mode')) document.body.className += ' night-mode'; } catch (e) { }</script>
    <div class="main">
<button class="sidebar-button sidebar-toggle">
  <span class="icon-menu" aria-hidden="true"></span>
  <span class="sr-only">Toggle Sidebar</span>
</button>
<button class="sidebar-button night-mode-toggle">
  <span class="icon-theme" aria-hidden="true"></span>
  <span class="sr-only">Toggle Theme</span>
</button>
<section class="sidebar">

  <a href="http://elixir-lang.org/docs.html" class="sidebar-projectLink">
    <div class="sidebar-projectDetails">
      <h1 class="sidebar-projectName">
Elixir      </h1>
      <h2 class="sidebar-projectVersion">
        v1.7.2
      </h2>
    </div>
      <img src="assets/logo.png" alt="Elixir" class="sidebar-projectImage">
  </a>

  <form class="sidebar-search" action="search.html">
    <button type="submit" class="search-button">
      <span class="icon-search" aria-hidden="true"></span>
    </button>
    <input name="q" type="text" id="search-list" class="search-input" placeholder="Search" aria-label="Search" autocomplete="off" />
  </form>

  <ul class="sidebar-listNav">
    <li><a id="extras-list" href="#full-list">Pages</a></li>

      <li><a id="modules-list" href="#full-list">Modules</a></li>

      <li><a id="exceptions-list" href="#full-list">Exceptions</a></li>

  </ul>
  <div class="gradient"></div>
  <ul id="full-list" class="sidebar-fullList"></ul>
</section>

<section class="content">
  <div class="content-outer">
    <div id="content" class="content-inner">


      <h1>
        <small class="visible-xs">Elixir v1.7.2</small>
Regex        
          <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L1" title="View Source" class="view-source" rel="help">
            <span class="icon-code" aria-hidden="true"></span>
            <span class="sr-only">View Source</span>
          </a>
      </h1>


        <section id="moduledoc">
<p>Provides regular expressions for Elixir.</p>
<p>Regex is based on PCRE (Perl Compatible Regular Expressions) and
built on top of Erlang’s <code class="inline">:re</code> module. More information can be found
in the <a href="http://www.erlang.org/doc/man/re.html"><code class="inline">:re</code> module documentation</a>.</p>
<p>Regular expressions in Elixir can be created using the sigils
<a href="Kernel.html#sigil_r/2"><code class="inline">~r</code></a> or <a href="Kernel.html#sigil_R/2"><code class="inline">~R</code></a>:</p>
<pre><code class="nohighlight makeup elixir"><span class="c1"># A simple regular expression that matches foo anywhere in the string</span><span class="w">
</span><span class="sr">~r/foo/</span><span class="w">

</span><span class="c1"># A regular expression with case insensitive and Unicode options</span><span class="w">
</span><span class="sr">~r/foo/iu</span></code></pre>
<p>Regular expressions created via sigils are pre-compiled and stored
in the <code class="inline">.beam</code> file. Notice this may be a problem if you are precompiling
Elixir, see the “Precompilation” section for more information.</p>
<p>A Regex is represented internally as the <a href="Regex.html#content"><code class="inline">Regex</code></a> struct. Therefore,
<code class="inline">%Regex{}</code> can be used whenever there is a need to match on them.
Keep in mind it is not guaranteed two regular expressions from the
same source are equal, for example:</p>
<pre><code class="nohighlight makeup elixir"><span class="sr">~r/(?&lt;foo&gt;.)(?&lt;bar&gt;.)/</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="sr">~r/(?&lt;foo&gt;.)(?&lt;bar&gt;.)/</span></code></pre>
<p>may return <code class="inline">true</code> or <code class="inline">false</code> depending on your machine, endianness,
available optimizations and others. You can, however, retrieve the source
of a compiled regular expression by accessing the <code class="inline">source</code> field, and then
compare those directly:</p>
<pre><code class="nohighlight makeup elixir"><span class="sr">~r/(?&lt;foo&gt;.)(?&lt;bar&gt;.)/</span><span class="o">.</span><span class="n">source</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="sr">~r/(?&lt;foo&gt;.)(?&lt;bar&gt;.)/</span><span class="o">.</span><span class="n">source</span></code></pre>
<h2 id="module-precompilation" class="section-heading">
  <a href="#module-precompilation" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Precompilation
</h2>

<p>Regular expressions built with sigil are precompiled and stored in <code class="inline">.beam</code>
files. This may be a problem if you are precompiling Elixir to run in
different OTP releases, as OTP releases may update the underlying regular
expression engine at any time.</p>
<p>For such reasons, we always recommend precompiling Elixir projects using
the Erlang/OTP version meant to run in production. In case cross-compilation is
really necessary, you can manually invoke <a href="Regex.html#recompile/1"><code class="inline">Regex.recompile/1</code></a> or
<a href="Regex.html#recompile!/1"><code class="inline">Regex.recompile!/1</code></a> to perform a runtime version check and recompile the
regex if necessary.</p>
<h2 id="module-modifiers" class="section-heading">
  <a href="#module-modifiers" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Modifiers
</h2>

<p>The modifiers available when creating a Regex are:</p>
<ul>
<li><p><code class="inline">unicode</code> (u) - enables Unicode specific patterns like <code class="inline">\p</code> and change
modifiers like <code class="inline">\w</code>, <code class="inline">\W</code>, <code class="inline">\s</code> and friends to also match on Unicode.
It expects valid Unicode strings to be given on match</p>
</li>
<li><p><code class="inline">caseless</code> (i) - adds case insensitivity</p>
</li>
<li><p><code class="inline">dotall</code> (s) - causes dot to match newlines and also set newline to
anycrlf; the new line setting can be overridden by setting <code class="inline">(*CR)</code> or
<code class="inline">(*LF)</code> or <code class="inline">(*CRLF)</code> or <code class="inline">(*ANY)</code> according to re documentation</p>
</li>
<li><p><code class="inline">multiline</code> (m) - causes <code class="inline">^</code> and <code class="inline">$</code> to mark the beginning and end of
each line; use <code class="inline">\A</code> and <code class="inline">\z</code> to match the end or beginning of the string</p>
</li>
<li><p><code class="inline">extended</code> (x) - whitespace characters are ignored except when escaped
and allow <code class="inline">#</code> to delimit comments</p>
</li>
<li><p><code class="inline">firstline</code> (f) - forces the unanchored pattern to match before or at the
first newline, though the matched text may continue over the newline</p>
</li>
<li><p><code class="inline">ungreedy</code> (U) - inverts the “greediness” of the regexp
(the previous <code class="inline">r</code> option is deprecated in favor of <code class="inline">U</code>)</p>
</li>
</ul>
<p>The options not available are:</p>
<ul>
<li><code class="inline">anchored</code> - not available, use <code class="inline">^</code> or <code class="inline">\A</code> instead
</li>
<li><code class="inline">dollar_endonly</code> - not available, use <code class="inline">\z</code> instead
</li>
<li><code class="inline">no_auto_capture</code> - not available, use <code class="inline">?:</code> instead
</li>
<li><code class="inline">newline</code> - not available, use <code class="inline">(*CR)</code> or <code class="inline">(*LF)</code> or <code class="inline">(*CRLF)</code> or
<code class="inline">(*ANYCRLF)</code> or <code class="inline">(*ANY)</code> at the beginning of the regexp according to the
re documentation
</li>
</ul>
<h2 id="module-captures" class="section-heading">
  <a href="#module-captures" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Captures
</h2>

<p>Many functions in this module handle what to capture in a regex
match via the <code class="inline">:capture</code> option. The supported values are:</p>
<ul>
<li><p><code class="inline">:all</code> - all captured subpatterns including the complete matching string
(this is the default)</p>
</li>
<li><p><code class="inline">:first</code> - only the first captured subpattern, which is always the
complete matching part of the string; all explicitly captured subpatterns
are discarded</p>
</li>
<li><p><code class="inline">:all_but_first</code> - all but the first matching subpattern, i.e. all
explicitly captured subpatterns, but not the complete matching part of
the string</p>
</li>
<li><p><code class="inline">:none</code> - does not return matching subpatterns at all</p>
</li>
<li><p><code class="inline">:all_names</code> - captures all names in the Regex</p>
</li>
<li><p><code class="inline">list(binary)</code> - a list of named captures to capture</p>
</li>
</ul>
        </section>

        <section id="summary" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#summary">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Summary
          </h1>
  <div class="summary-types summary">
    <h2>
      <a href="#types">Types</a>
    </h2>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#t:t/0">t()</a>
  </div>
</div>
  </div>
          
  <div class="summary-functions summary">
    <h2>
      <a href="#functions">Functions</a>
    </h2>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#compile!/2">compile!(source, options \\ &quot;&quot;)</a>
  </div>
    <div class="summary-synopsis"><p>Compiles the regular expression and raises <a href="Regex.CompileError.html"><code class="inline">Regex.CompileError</code></a> in case of errors</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#compile/2">compile(source, options \\ &quot;&quot;)</a>
  </div>
    <div class="summary-synopsis"><p>Compiles the regular expression</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#escape/1">escape(string)</a>
  </div>
    <div class="summary-synopsis"><p>Escapes a string to be literally matched in a regex</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#match?/2">match?(regex, string)</a>
  </div>
    <div class="summary-synopsis"><p>Returns a boolean indicating whether there was a match or not</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#named_captures/3">named_captures(regex, string, options \\ [])</a>
  </div>
    <div class="summary-synopsis"><p>Returns the given captures as a map or <code class="inline">nil</code> if no captures are found</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#names/1">names(regex)</a>
  </div>
    <div class="summary-synopsis"><p>Returns a list of names in the regex</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#opts/1">opts(regex)</a>
  </div>
    <div class="summary-synopsis"><p>Returns the regex options as a string</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#re_pattern/1">re_pattern(regex)</a>
  </div>
    <div class="summary-synopsis"><p>Returns the underlying <code class="inline">re_pattern</code> in the regular expression</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#recompile!/1">recompile!(regex)</a>
  </div>
    <div class="summary-synopsis"><p>Recompiles the existing regular expression and raises <a href="Regex.CompileError.html"><code class="inline">Regex.CompileError</code></a> in case of errors</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#recompile/1">recompile(regex)</a>
  </div>
    <div class="summary-synopsis"><p>Recompiles the existing regular expression if necessary</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#regex?/1">regex?(term)</a>
  </div>
    <div class="summary-synopsis"><p>Returns <code class="inline">true</code> if the given <code class="inline">term</code> is a regex.
Otherwise returns <code class="inline">false</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#replace/4">replace(regex, string, replacement, options \\ [])</a>
  </div>
    <div class="summary-synopsis"><p>Receives a regex, a binary and a replacement, returns a new
binary where all matches are replaced by the replacement</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#run/3">run(regex, string, options \\ [])</a>
  </div>
    <div class="summary-synopsis"><p>Runs the regular expression against the given string until the first match.
It returns a list with all captures or <code class="inline">nil</code> if no match occurred</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#scan/3">scan(regex, string, options \\ [])</a>
  </div>
    <div class="summary-synopsis"><p>Same as <a href="#run/3"><code class="inline">run/3</code></a>, but scans the target several times collecting all
matches of the regular expression</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#source/1">source(regex)</a>
  </div>
    <div class="summary-synopsis"><p>Returns the regex source as a binary</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#split/3">split(regex, string, options \\ [])</a>
  </div>
    <div class="summary-synopsis"><p>Splits the given target based on the given pattern and in the given number of
parts</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#version/0">version()</a>
  </div>
    <div class="summary-synopsis"><p>Returns the version of the underlying Regex engine</p>
</div>
</div>
  </div>
          
        </section>

        <section id="types" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#types">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Types
          </h1>
          <div class="types-list">
<div class="detail" id="t:t/0">
    <div class="detail-header">
    <a href="#t:t/0" class="detail-link" title="Link to this type">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this type</span>
    </a>
    <span class="signature">t()</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L110" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>t() :: %Regex{
  opts: <a href="typespecs.html#built-in-types">binary</a>(),
  re_pattern: <a href="typespecs.html#built-in-types">term</a>(),
  re_version: <a href="typespecs.html#built-in-types">term</a>(),
  source: <a href="typespecs.html#built-in-types">binary</a>()
}</pre>
      </div>
  </div>
  <section class="docstring">
  </section>
</div>
          </div>
        </section>


        <section id="functions" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#functions">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Functions
          </h1>
<div class="detail" id="compile!/2">
  
    <span id="compile!/1"></span>
  <div class="detail-header">
    <a href="#compile!/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">compile!(source, options \\ &quot;&quot;)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L169" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>compile!(<a href="typespecs.html#built-in-types">binary</a>(), <a href="typespecs.html#built-in-types">binary</a>() | [<a href="typespecs.html#built-in-types">term</a>()]) :: <a href="#t:t/0">t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Compiles the regular expression and raises <a href="Regex.CompileError.html"><code class="inline">Regex.CompileError</code></a> in case of errors.</p>
  </section>
</div>
<div class="detail" id="compile/2">
  
    <span id="compile/1"></span>
  <div class="detail-header">
    <a href="#compile/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">compile(source, options \\ &quot;&quot;)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L137" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>compile(<a href="typespecs.html#built-in-types">binary</a>(), <a href="typespecs.html#built-in-types">binary</a>() | [<a href="typespecs.html#built-in-types">term</a>()]) :: {:ok, <a href="#t:t/0">t</a>()} | {:error, <a href="typespecs.html#basic-types">any</a>()}</pre>
      </div>
  </div>
  <section class="docstring">
<p>Compiles the regular expression.</p>
<p>The given options can either be a binary with the characters
representing the same regex options given to the
<a href="Kernel.html#sigil_r/2"><code class="inline">~r</code></a> sigil, or a list of options, as
expected by the Erlang’s <code class="inline">:re</code> module.</p>
<p>It returns <code class="inline">{:ok, regex}</code> in case of success,
<code class="inline">{:error, reason}</code> otherwise.</p>
<h2 id="compile/2-examples" class="section-heading">
  <a href="#compile/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">compile</span><span class="p" data-group-id="2412143561-1">(</span><span class="s">&quot;foo&quot;</span><span class="p" data-group-id="2412143561-1">)</span><span class="w">
</span><span class="p" data-group-id="2412143561-2">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="sr">~r/foo/</span><span class="p" data-group-id="2412143561-2">}</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">compile</span><span class="p" data-group-id="2412143561-3">(</span><span class="s">&quot;*foo&quot;</span><span class="p" data-group-id="2412143561-3">)</span><span class="w">
</span><span class="p" data-group-id="2412143561-4">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="2412143561-5">{</span><span class="sc">&#39;nothing to repeat&#39;</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p" data-group-id="2412143561-5">}</span><span class="p" data-group-id="2412143561-4">}</span></code></pre>
  </section>
</div>
<div class="detail" id="escape/1">
    <div class="detail-header">
    <a href="#escape/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">escape(string)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L741" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>escape(<a href="String.html#t:t/0">String.t</a>()) :: <a href="String.html#t:t/0">String.t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Escapes a string to be literally matched in a regex.</p>
<h2 id="escape/1-examples" class="section-heading">
  <a href="#escape/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">escape</span><span class="p" data-group-id="0853917229-1">(</span><span class="s">&quot;.&quot;</span><span class="p" data-group-id="0853917229-1">)</span><span class="w">
</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">.&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">escape</span><span class="p" data-group-id="0853917229-2">(</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">what if&quot;</span><span class="p" data-group-id="0853917229-2">)</span><span class="w">
</span><span class="s">&quot;</span><span class="se">\\</span><span class="se">\\</span><span class="s">what</span><span class="se">\\</span><span class="s"> if&quot;</span></code></pre>
  </section>
</div>
<div class="detail" id="match?/2">
    <div class="detail-header">
    <a href="#match?/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">match?(regex, string)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L236" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>match?(<a href="#t:t/0">t</a>(), <a href="String.html#t:t/0">String.t</a>()) :: <a href="typespecs.html#built-in-types">boolean</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns a boolean indicating whether there was a match or not.</p>
<h2 id="match?/2-examples" class="section-heading">
  <a href="#match?/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">match?</span><span class="p" data-group-id="8479035087-1">(</span><span class="sr">~r/foo/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;foo&quot;</span><span class="p" data-group-id="8479035087-1">)</span><span class="w">
</span><span class="no">true</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">match?</span><span class="p" data-group-id="8479035087-2">(</span><span class="sr">~r/foo/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;bar&quot;</span><span class="p" data-group-id="8479035087-2">)</span><span class="w">
</span><span class="no">false</span></code></pre>
  </section>
</div>
<div class="detail" id="named_captures/3">
  
    <span id="named_captures/2"></span>
  <div class="detail-header">
    <a href="#named_captures/3" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">named_captures(regex, string, options \\ [])</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L316" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>named_captures(<a href="#t:t/0">t</a>(), <a href="String.html#t:t/0">String.t</a>(), [<a href="typespecs.html#built-in-types">term</a>()]) :: <a href="typespecs.html#basic-types">map</a>() | nil</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns the given captures as a map or <code class="inline">nil</code> if no captures are found.</p>
<h2 id="named_captures/3-options" class="section-heading">
  <a href="#named_captures/3-options" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Options
</h2>

<ul>
<li><code class="inline">:return</code> - set to <code class="inline">:index</code> to return byte index and match length.
Defaults to <code class="inline">:binary</code>.
</li>
</ul>
<h2 id="named_captures/3-examples" class="section-heading">
  <a href="#named_captures/3-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">named_captures</span><span class="p" data-group-id="8333583037-1">(</span><span class="sr">~r/c(?&lt;foo&gt;d)/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcd&quot;</span><span class="p" data-group-id="8333583037-1">)</span><span class="w">
</span><span class="p" data-group-id="8333583037-2">%{</span><span class="s">&quot;foo&quot;</span><span class="w"> </span><span class="o">=</span><span class="o">&gt;</span><span class="w"> </span><span class="s">&quot;d&quot;</span><span class="p" data-group-id="8333583037-2">}</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">named_captures</span><span class="p" data-group-id="8333583037-3">(</span><span class="sr">~r/a(?&lt;foo&gt;b)c(?&lt;bar&gt;d)/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcd&quot;</span><span class="p" data-group-id="8333583037-3">)</span><span class="w">
</span><span class="p" data-group-id="8333583037-4">%{</span><span class="s">&quot;bar&quot;</span><span class="w"> </span><span class="o">=</span><span class="o">&gt;</span><span class="w"> </span><span class="s">&quot;d&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;foo&quot;</span><span class="w"> </span><span class="o">=</span><span class="o">&gt;</span><span class="w"> </span><span class="s">&quot;b&quot;</span><span class="p" data-group-id="8333583037-4">}</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">named_captures</span><span class="p" data-group-id="8333583037-5">(</span><span class="sr">~r/a(?&lt;foo&gt;b)c(?&lt;bar&gt;d)/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;efgh&quot;</span><span class="p" data-group-id="8333583037-5">)</span><span class="w">
</span><span class="no">nil</span></code></pre>
  </section>
</div>
<div class="detail" id="names/1">
    <div class="detail-header">
    <a href="#names/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">names(regex)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L369" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>names(<a href="#t:t/0">t</a>()) :: [<a href="String.html#t:t/0">String.t</a>()]</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns a list of names in the regex.</p>
<h2 id="names/1-examples" class="section-heading">
  <a href="#names/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">names</span><span class="p" data-group-id="8362608478-1">(</span><span class="sr">~r/(?&lt;foo&gt;bar)/</span><span class="p" data-group-id="8362608478-1">)</span><span class="w">
</span><span class="p" data-group-id="8362608478-2">[</span><span class="s">&quot;foo&quot;</span><span class="p" data-group-id="8362608478-2">]</span></code></pre>
  </section>
</div>
<div class="detail" id="opts/1">
    <div class="detail-header">
    <a href="#opts/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">opts(regex)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L355" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>opts(<a href="#t:t/0">t</a>()) :: <a href="String.html#t:t/0">String.t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns the regex options as a string.</p>
<h2 id="opts/1-examples" class="section-heading">
  <a href="#opts/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">opts</span><span class="p" data-group-id="7032669905-1">(</span><span class="sr">~r(foo)m</span><span class="p" data-group-id="7032669905-1">)</span><span class="w">
</span><span class="s">&quot;m&quot;</span></code></pre>
  </section>
</div>
<div class="detail" id="re_pattern/1">
    <div class="detail-header">
    <a href="#re_pattern/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">re_pattern(regex)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L327" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>re_pattern(<a href="#t:t/0">t</a>()) :: <a href="typespecs.html#built-in-types">term</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns the underlying <code class="inline">re_pattern</code> in the regular expression.</p>
  </section>
</div>
<div class="detail" id="recompile!/1">
    <div class="detail-header">
    <a href="#recompile!/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">recompile!(regex)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L202" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.4.0)</span>
    
      <div class="specs">
          <pre>recompile!(<a href="#t:t/0">t</a>()) :: <a href="#t:t/0">t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Recompiles the existing regular expression and raises <a href="Regex.CompileError.html"><code class="inline">Regex.CompileError</code></a> in case of errors.</p>
  </section>
</div>
<div class="detail" id="recompile/1">
    <div class="detail-header">
    <a href="#recompile/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">recompile(regex)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L184" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.4.0)</span>
    
      <div class="specs">
          <pre>recompile(<a href="#t:t/0">t</a>()) :: <a href="#t:t/0">t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Recompiles the existing regular expression if necessary.</p>
<p>This checks the version stored in the regular expression
and recompiles the regex in case of version mismatch.</p>
  </section>
</div>
<div class="detail" id="regex?/1">
    <div class="detail-header">
    <a href="#regex?/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">regex?(term)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L256" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>regex?(<a href="typespecs.html#basic-types">any</a>()) :: <a href="typespecs.html#built-in-types">boolean</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns <code class="inline">true</code> if the given <code class="inline">term</code> is a regex.
Otherwise returns <code class="inline">false</code>.</p>
<h2 id="regex?/1-examples" class="section-heading">
  <a href="#regex?/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">regex?</span><span class="p" data-group-id="4986867167-1">(</span><span class="sr">~r/foo/</span><span class="p" data-group-id="4986867167-1">)</span><span class="w">
</span><span class="no">true</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">regex?</span><span class="p" data-group-id="4986867167-2">(</span><span class="mi">0</span><span class="p" data-group-id="4986867167-2">)</span><span class="w">
</span><span class="no">false</span></code></pre>
  </section>
</div>
<div class="detail" id="replace/4">
  
    <span id="replace/3"></span>
  <div class="detail-header">
    <a href="#replace/4" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">replace(regex, string, replacement, options \\ [])</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L600" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>replace(<a href="#t:t/0">t</a>(), <a href="String.html#t:t/0">String.t</a>(), <a href="String.html#t:t/0">String.t</a>() | (... -> <a href="String.html#t:t/0">String.t</a>()), [<a href="typespecs.html#built-in-types">term</a>()]) ::
  <a href="String.html#t:t/0">String.t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Receives a regex, a binary and a replacement, returns a new
binary where all matches are replaced by the replacement.</p>
<p>The replacement can be either a string or a function. The string
is used as a replacement for every match and it allows specific
captures to be accessed via <code class="inline">\N</code> or <code class="inline">\g{N}</code>, where <code class="inline">N</code> is the
capture. In case <code class="inline">\0</code> is used, the whole match is inserted. Note
that in regexes the backslash needs to be escaped, hence in practice
you’ll need to use <code class="inline">\\N</code> and <code class="inline">\\g{N}</code>.</p>
<p>When the replacement is a function, the function may have arity
N where each argument maps to a capture, with the first argument
being the whole match. If the function expects more arguments
than captures found, the remaining arguments will receive <code class="inline">&quot;&quot;</code>.</p>
<h2 id="replace/4-options" class="section-heading">
  <a href="#replace/4-options" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Options
</h2>

<ul>
<li><code class="inline">:global</code> - when <code class="inline">false</code>, replaces only the first occurrence
(defaults to <code class="inline">true</code>)
</li>
</ul>
<h2 id="replace/4-examples" class="section-heading">
  <a href="#replace/4-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">replace</span><span class="p" data-group-id="3371601748-1">(</span><span class="sr">~r/d/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abc&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;d&quot;</span><span class="p" data-group-id="3371601748-1">)</span><span class="w">
</span><span class="s">&quot;abc&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">replace</span><span class="p" data-group-id="3371601748-2">(</span><span class="sr">~r/b/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abc&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;d&quot;</span><span class="p" data-group-id="3371601748-2">)</span><span class="w">
</span><span class="s">&quot;adc&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">replace</span><span class="p" data-group-id="3371601748-3">(</span><span class="sr">~r/b/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abc&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;[</span><span class="se">\\</span><span class="s">0]&quot;</span><span class="p" data-group-id="3371601748-3">)</span><span class="w">
</span><span class="s">&quot;a[b]c&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">replace</span><span class="p" data-group-id="3371601748-4">(</span><span class="sr">~r/a(b|d)c/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcadc&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;[</span><span class="se">\\</span><span class="s">1]&quot;</span><span class="p" data-group-id="3371601748-4">)</span><span class="w">
</span><span class="s">&quot;[b][d]&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">replace</span><span class="p" data-group-id="3371601748-5">(</span><span class="sr">~r/</span><span class="se">\.</span><span class="sr">(</span><span class="se">\d</span><span class="sr">)$/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;500.5&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;.</span><span class="se">\\</span><span class="s">g{1}0&quot;</span><span class="p" data-group-id="3371601748-5">)</span><span class="w">
</span><span class="s">&quot;500.50&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">replace</span><span class="p" data-group-id="3371601748-6">(</span><span class="sr">~r/a(b|d)c/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcadc&quot;</span><span class="p">,</span><span class="w"> </span><span class="k" data-group-id="3371601748-7">fn</span><span class="w"> </span><span class="bp">_</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="s">&quot;[</span><span class="si" data-group-id="3371601748-8">#{</span><span class="n">x</span><span class="si" data-group-id="3371601748-8">}</span><span class="s">]&quot;</span><span class="w"> </span><span class="k" data-group-id="3371601748-7">end</span><span class="p" data-group-id="3371601748-6">)</span><span class="w">
</span><span class="s">&quot;[b][d]&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">replace</span><span class="p" data-group-id="3371601748-9">(</span><span class="sr">~r/a/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcadc&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;A&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">global</span><span class="p">:</span><span class="w"> </span><span class="no">false</span><span class="p" data-group-id="3371601748-9">)</span><span class="w">
</span><span class="s">&quot;Abcadc&quot;</span></code></pre>
  </section>
</div>
<div class="detail" id="run/3">
  
    <span id="run/2"></span>
  <div class="detail-header">
    <a href="#run/3" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">run(regex, string, options \\ [])</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L284" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>run(<a href="#t:t/0">t</a>(), <a href="typespecs.html#built-in-types">binary</a>(), [<a href="typespecs.html#built-in-types">term</a>()]) :: nil | [<a href="typespecs.html#built-in-types">binary</a>()] | [{<a href="typespecs.html#basic-types">integer</a>(), <a href="typespecs.html#basic-types">integer</a>()}]</pre>
      </div>
  </div>
  <section class="docstring">
<p>Runs the regular expression against the given string until the first match.
It returns a list with all captures or <code class="inline">nil</code> if no match occurred.</p>
<h2 id="run/3-options" class="section-heading">
  <a href="#run/3-options" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Options
</h2>

<ul>
<li><code class="inline">:return</code> - set to <code class="inline">:index</code> to return byte index and match length.
Defaults to <code class="inline">:binary</code>.
</li>
<li><code class="inline">:capture</code> - what to capture in the result. Check the moduledoc for <a href="Regex.html#content"><code class="inline">Regex</code></a>
to see the possible capture values.
</li>
</ul>
<h2 id="run/3-examples" class="section-heading">
  <a href="#run/3-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">run</span><span class="p" data-group-id="7074171953-1">(</span><span class="sr">~r/c(d)/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcd&quot;</span><span class="p" data-group-id="7074171953-1">)</span><span class="w">
</span><span class="p" data-group-id="7074171953-2">[</span><span class="s">&quot;cd&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;d&quot;</span><span class="p" data-group-id="7074171953-2">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">run</span><span class="p" data-group-id="7074171953-3">(</span><span class="sr">~r/e/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcd&quot;</span><span class="p" data-group-id="7074171953-3">)</span><span class="w">
</span><span class="no">nil</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">run</span><span class="p" data-group-id="7074171953-4">(</span><span class="sr">~r/c(d)/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcd&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">return</span><span class="p">:</span><span class="w"> </span><span class="ss">:index</span><span class="p" data-group-id="7074171953-4">)</span><span class="w">
</span><span class="p" data-group-id="7074171953-5">[</span><span class="p" data-group-id="7074171953-6">{</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p" data-group-id="7074171953-6">}</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="7074171953-7">{</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="7074171953-7">}</span><span class="p" data-group-id="7074171953-5">]</span></code></pre>
  </section>
</div>
<div class="detail" id="scan/3">
  
    <span id="scan/2"></span>
  <div class="detail-header">
    <a href="#scan/3" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">scan(regex, string, options \\ [])</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L409" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>scan(<a href="#t:t/0">t</a>(), <a href="String.html#t:t/0">String.t</a>(), [<a href="typespecs.html#built-in-types">term</a>()]) :: [[<a href="String.html#t:t/0">String.t</a>()]]</pre>
      </div>
  </div>
  <section class="docstring">
<p>Same as <a href="#run/3"><code class="inline">run/3</code></a>, but scans the target several times collecting all
matches of the regular expression.</p>
<p>A list of lists is returned, where each entry in the primary list represents a
match and each entry in the secondary list represents the captured contents.</p>
<h2 id="scan/3-options" class="section-heading">
  <a href="#scan/3-options" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Options
</h2>

<ul>
<li><code class="inline">:return</code> - set to <code class="inline">:index</code> to return byte index and match length.
Defaults to <code class="inline">:binary</code>.
</li>
<li><code class="inline">:capture</code> - what to capture in the result. Check the moduledoc for <a href="Regex.html#content"><code class="inline">Regex</code></a>
to see the possible capture values.
</li>
</ul>
<h2 id="scan/3-examples" class="section-heading">
  <a href="#scan/3-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">scan</span><span class="p" data-group-id="6766186416-1">(</span><span class="sr">~r/c(d|e)/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcd abce&quot;</span><span class="p" data-group-id="6766186416-1">)</span><span class="w">
</span><span class="p" data-group-id="6766186416-2">[</span><span class="p" data-group-id="6766186416-3">[</span><span class="s">&quot;cd&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;d&quot;</span><span class="p" data-group-id="6766186416-3">]</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="6766186416-4">[</span><span class="s">&quot;ce&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;e&quot;</span><span class="p" data-group-id="6766186416-4">]</span><span class="p" data-group-id="6766186416-2">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">scan</span><span class="p" data-group-id="6766186416-5">(</span><span class="sr">~r/c(?:d|e)/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcd abce&quot;</span><span class="p" data-group-id="6766186416-5">)</span><span class="w">
</span><span class="p" data-group-id="6766186416-6">[</span><span class="p" data-group-id="6766186416-7">[</span><span class="s">&quot;cd&quot;</span><span class="p" data-group-id="6766186416-7">]</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="6766186416-8">[</span><span class="s">&quot;ce&quot;</span><span class="p" data-group-id="6766186416-8">]</span><span class="p" data-group-id="6766186416-6">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">scan</span><span class="p" data-group-id="6766186416-9">(</span><span class="sr">~r/e/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abcd&quot;</span><span class="p" data-group-id="6766186416-9">)</span><span class="w">
</span><span class="p" data-group-id="6766186416-10">[</span><span class="p" data-group-id="6766186416-10">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">scan</span><span class="p" data-group-id="6766186416-11">(</span><span class="sr">~r/</span><span class="se">\p</span><span class="sr">{Sc}/u</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;$, £, and €&quot;</span><span class="p" data-group-id="6766186416-11">)</span><span class="w">
</span><span class="p" data-group-id="6766186416-12">[</span><span class="p" data-group-id="6766186416-13">[</span><span class="s">&quot;$&quot;</span><span class="p" data-group-id="6766186416-13">]</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="6766186416-14">[</span><span class="s">&quot;£&quot;</span><span class="p" data-group-id="6766186416-14">]</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="6766186416-15">[</span><span class="s">&quot;€&quot;</span><span class="p" data-group-id="6766186416-15">]</span><span class="p" data-group-id="6766186416-12">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">scan</span><span class="p" data-group-id="6766186416-16">(</span><span class="sr">~r/=+/</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;=ü†ƒ8===&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">return</span><span class="p">:</span><span class="w"> </span><span class="ss">:index</span><span class="p" data-group-id="6766186416-16">)</span><span class="w">
</span><span class="p" data-group-id="6766186416-17">[</span><span class="p" data-group-id="6766186416-18">[</span><span class="p" data-group-id="6766186416-19">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="6766186416-19">}</span><span class="p" data-group-id="6766186416-18">]</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="6766186416-20">[</span><span class="p" data-group-id="6766186416-21">{</span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p" data-group-id="6766186416-21">}</span><span class="p" data-group-id="6766186416-20">]</span><span class="p" data-group-id="6766186416-17">]</span></code></pre>
  </section>
</div>
<div class="detail" id="source/1">
    <div class="detail-header">
    <a href="#source/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">source(regex)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L341" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>source(<a href="#t:t/0">t</a>()) :: <a href="String.html#t:t/0">String.t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns the regex source as a binary.</p>
<h2 id="source/1-examples" class="section-heading">
  <a href="#source/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">source</span><span class="p" data-group-id="9701992339-1">(</span><span class="sr">~r(foo)</span><span class="p" data-group-id="9701992339-1">)</span><span class="w">
</span><span class="s">&quot;foo&quot;</span></code></pre>
  </section>
</div>
<div class="detail" id="split/3">
  
    <span id="split/2"></span>
  <div class="detail-header">
    <a href="#split/3" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">split(regex, string, options \\ [])</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L480" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>split(<a href="#t:t/0">t</a>(), <a href="String.html#t:t/0">String.t</a>(), [<a href="typespecs.html#built-in-types">term</a>()]) :: [<a href="String.html#t:t/0">String.t</a>()]</pre>
      </div>
  </div>
  <section class="docstring">
<p>Splits the given target based on the given pattern and in the given number of
parts.</p>
<h2 id="split/3-options" class="section-heading">
  <a href="#split/3-options" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Options
</h2>

<ul>
<li><p><code class="inline">:parts</code> - when specified, splits the string into the given number of
parts. If not specified, <code class="inline">:parts</code> defaults to <code class="inline">:infinity</code>, which will
split the string into the maximum number of parts possible based on the
given pattern.</p>
</li>
<li><p><code class="inline">:trim</code> - when <code class="inline">true</code>, removes empty strings (<code class="inline">&quot;&quot;</code>) from the result.
Defaults to <code class="inline">false</code>.</p>
</li>
<li><p><code class="inline">:on</code> - specifies which captures to split the string on, and in what
order. Defaults to <code class="inline">:first</code> which means captures inside the regex do not
affect the splitting process.</p>
</li>
<li><p><code class="inline">:include_captures</code> - when <code class="inline">true</code>, includes in the result the matches of
the regular expression. Defaults to <code class="inline">false</code>.</p>
</li>
</ul>
<h2 id="split/3-examples" class="section-heading">
  <a href="#split/3-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">split</span><span class="p" data-group-id="0406948417-1">(</span><span class="sr">~r{-}</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;a-b-c&quot;</span><span class="p" data-group-id="0406948417-1">)</span><span class="w">
</span><span class="p" data-group-id="0406948417-2">[</span><span class="s">&quot;a&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;b&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;c&quot;</span><span class="p" data-group-id="0406948417-2">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">split</span><span class="p" data-group-id="0406948417-3">(</span><span class="sr">~r{-}</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;a-b-c&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">parts</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p" data-group-id="0406948417-3">)</span><span class="w">
</span><span class="p" data-group-id="0406948417-4">[</span><span class="s">&quot;a&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;b-c&quot;</span><span class="p" data-group-id="0406948417-4">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">split</span><span class="p" data-group-id="0406948417-5">(</span><span class="sr">~r{-}</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abc&quot;</span><span class="p" data-group-id="0406948417-5">)</span><span class="w">
</span><span class="p" data-group-id="0406948417-6">[</span><span class="s">&quot;abc&quot;</span><span class="p" data-group-id="0406948417-6">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">split</span><span class="p" data-group-id="0406948417-7">(</span><span class="sr">~r{}</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abc&quot;</span><span class="p" data-group-id="0406948417-7">)</span><span class="w">
</span><span class="p" data-group-id="0406948417-8">[</span><span class="s">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;a&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;b&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;c&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;&quot;</span><span class="p" data-group-id="0406948417-8">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">split</span><span class="p" data-group-id="0406948417-9">(</span><span class="sr">~r{a(?&lt;second&gt;b)c}</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abc&quot;</span><span class="p" data-group-id="0406948417-9">)</span><span class="w">
</span><span class="p" data-group-id="0406948417-10">[</span><span class="s">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;&quot;</span><span class="p" data-group-id="0406948417-10">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">split</span><span class="p" data-group-id="0406948417-11">(</span><span class="sr">~r{a(?&lt;second&gt;b)c}</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abc&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">on</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="0406948417-12">[</span><span class="ss">:second</span><span class="p" data-group-id="0406948417-12">]</span><span class="p" data-group-id="0406948417-11">)</span><span class="w">
</span><span class="p" data-group-id="0406948417-13">[</span><span class="s">&quot;a&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;c&quot;</span><span class="p" data-group-id="0406948417-13">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">split</span><span class="p" data-group-id="0406948417-14">(</span><span class="sr">~r{(x)}</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Elixir&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">include_captures</span><span class="p">:</span><span class="w"> </span><span class="no">true</span><span class="p" data-group-id="0406948417-14">)</span><span class="w">
</span><span class="p" data-group-id="0406948417-15">[</span><span class="s">&quot;Eli&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;x&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ir&quot;</span><span class="p" data-group-id="0406948417-15">]</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Regex</span><span class="o">.</span><span class="n">split</span><span class="p" data-group-id="0406948417-16">(</span><span class="sr">~r{a(?&lt;second&gt;b)c}</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abc&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">on</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="0406948417-17">[</span><span class="ss">:second</span><span class="p" data-group-id="0406948417-17">]</span><span class="p">,</span><span class="w"> </span><span class="ss">include_captures</span><span class="p">:</span><span class="w"> </span><span class="no">true</span><span class="p" data-group-id="0406948417-16">)</span><span class="w">
</span><span class="p" data-group-id="0406948417-18">[</span><span class="s">&quot;a&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;b&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;c&quot;</span><span class="p" data-group-id="0406948417-18">]</span></code></pre>
  </section>
</div>
<div class="detail" id="version/0">
    <div class="detail-header">
    <a href="#version/0" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">version()</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/regex.ex#L215" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.4.0)</span>
    
      <div class="specs">
          <pre>version() :: <a href="typespecs.html#built-in-types">term</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns the version of the underlying Regex engine.</p>
  </section>
</div>
        </section>

          <footer class="footer">
        <p>
          <span class="line">
            Built using
            <a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.19.1),
          </span>
          <span class="line">
            designed by
            <a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
            </span>
        </p>
      </footer>
    </div>
  </div>
</section>
</div>
  <script src="dist/app-a0c90688fa.js"></script>
  
  </body>
</html>