<!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/(?<foo>.)(?<bar>.)/</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="sr">~r/(?<foo>.)(?<bar>.)/</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/(?<foo>.)(?<bar>.)/</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/(?<foo>.)(?<bar>.)/</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 \\ "")</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 \\ "")</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 \\ "")</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 \\ "")</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> </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">"foo"</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> </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">"*foo"</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">'nothing to repeat'</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> </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">"."</span><span class="p" data-group-id="0853917229-1">)</span><span class="w"> </span><span class="s">"</span><span class="se">\\</span><span class="s">."</span><span class="w"> </span><span class="gp unselectable">iex> </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">"</span><span class="se">\\</span><span class="s">what if"</span><span class="p" data-group-id="0853917229-2">)</span><span class="w"> </span><span class="s">"</span><span class="se">\\</span><span class="se">\\</span><span class="s">what</span><span class="se">\\</span><span class="s"> if"</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> </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">"foo"</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> </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">"bar"</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> </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(?<foo>d)/</span><span class="p">,</span><span class="w"> </span><span class="s">"abcd"</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">"foo"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="s">"d"</span><span class="p" data-group-id="8333583037-2">}</span><span class="w"> </span><span class="gp unselectable">iex> </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(?<foo>b)c(?<bar>d)/</span><span class="p">,</span><span class="w"> </span><span class="s">"abcd"</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">"bar"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="s">"d"</span><span class="p">,</span><span class="w"> </span><span class="s">"foo"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="s">"b"</span><span class="p" data-group-id="8333583037-4">}</span><span class="w"> </span><span class="gp unselectable">iex> </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(?<foo>b)c(?<bar>d)/</span><span class="p">,</span><span class="w"> </span><span class="s">"efgh"</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> </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/(?<foo>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">"foo"</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> </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">"m"</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> </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> </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">""</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> </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">"abc"</span><span class="p">,</span><span class="w"> </span><span class="s">"d"</span><span class="p" data-group-id="3371601748-1">)</span><span class="w"> </span><span class="s">"abc"</span><span class="w"> </span><span class="gp unselectable">iex> </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">"abc"</span><span class="p">,</span><span class="w"> </span><span class="s">"d"</span><span class="p" data-group-id="3371601748-2">)</span><span class="w"> </span><span class="s">"adc"</span><span class="w"> </span><span class="gp unselectable">iex> </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">"abc"</span><span class="p">,</span><span class="w"> </span><span class="s">"[</span><span class="se">\\</span><span class="s">0]"</span><span class="p" data-group-id="3371601748-3">)</span><span class="w"> </span><span class="s">"a[b]c"</span><span class="w"> </span><span class="gp unselectable">iex> </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">"abcadc"</span><span class="p">,</span><span class="w"> </span><span class="s">"[</span><span class="se">\\</span><span class="s">1]"</span><span class="p" data-group-id="3371601748-4">)</span><span class="w"> </span><span class="s">"[b][d]"</span><span class="w"> </span><span class="gp unselectable">iex> </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">"500.5"</span><span class="p">,</span><span class="w"> </span><span class="s">".</span><span class="se">\\</span><span class="s">g{1}0"</span><span class="p" data-group-id="3371601748-5">)</span><span class="w"> </span><span class="s">"500.50"</span><span class="w"> </span><span class="gp unselectable">iex> </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">"abcadc"</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">-></span><span class="w"> </span><span class="s">"[</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">]"</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">"[b][d]"</span><span class="w"> </span><span class="gp unselectable">iex> </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">"abcadc"</span><span class="p">,</span><span class="w"> </span><span class="s">"A"</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">"Abcadc"</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> </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">"abcd"</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">"cd"</span><span class="p">,</span><span class="w"> </span><span class="s">"d"</span><span class="p" data-group-id="7074171953-2">]</span><span class="w"> </span><span class="gp unselectable">iex> </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">"abcd"</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> </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">"abcd"</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> </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">"abcd abce"</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">"cd"</span><span class="p">,</span><span class="w"> </span><span class="s">"d"</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">"ce"</span><span class="p">,</span><span class="w"> </span><span class="s">"e"</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> </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">"abcd abce"</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">"cd"</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">"ce"</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> </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">"abcd"</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> </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">"$, £, and €"</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">"$"</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">"£"</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">"€"</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> </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">"=ü†ƒ8==="</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> </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">"foo"</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">""</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> </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">"a-b-c"</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">"a"</span><span class="p">,</span><span class="w"> </span><span class="s">"b"</span><span class="p">,</span><span class="w"> </span><span class="s">"c"</span><span class="p" data-group-id="0406948417-2">]</span><span class="w"> </span><span class="gp unselectable">iex> </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">"a-b-c"</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">"a"</span><span class="p">,</span><span class="w"> </span><span class="s">"b-c"</span><span class="p" data-group-id="0406948417-4">]</span><span class="w"> </span><span class="gp unselectable">iex> </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">"abc"</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">"abc"</span><span class="p" data-group-id="0406948417-6">]</span><span class="w"> </span><span class="gp unselectable">iex> </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">"abc"</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">""</span><span class="p">,</span><span class="w"> </span><span class="s">"a"</span><span class="p">,</span><span class="w"> </span><span class="s">"b"</span><span class="p">,</span><span class="w"> </span><span class="s">"c"</span><span class="p">,</span><span class="w"> </span><span class="s">""</span><span class="p" data-group-id="0406948417-8">]</span><span class="w"> </span><span class="gp unselectable">iex> </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(?<second>b)c}</span><span class="p">,</span><span class="w"> </span><span class="s">"abc"</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">""</span><span class="p">,</span><span class="w"> </span><span class="s">""</span><span class="p" data-group-id="0406948417-10">]</span><span class="w"> </span><span class="gp unselectable">iex> </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(?<second>b)c}</span><span class="p">,</span><span class="w"> </span><span class="s">"abc"</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">"a"</span><span class="p">,</span><span class="w"> </span><span class="s">"c"</span><span class="p" data-group-id="0406948417-13">]</span><span class="w"> </span><span class="gp unselectable">iex> </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">"Elixir"</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">"Eli"</span><span class="p">,</span><span class="w"> </span><span class="s">"x"</span><span class="p">,</span><span class="w"> </span><span class="s">"ir"</span><span class="p" data-group-id="0406948417-15">]</span><span class="w"> </span><span class="gp unselectable">iex> </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(?<second>b)c}</span><span class="p">,</span><span class="w"> </span><span class="s">"abc"</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">"a"</span><span class="p">,</span><span class="w"> </span><span class="s">"b"</span><span class="p">,</span><span class="w"> </span><span class="s">"c"</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>