<main><divclass="width-limiter"><navclass="sub"><formclass="search-form"><span></span><divid="sidebar-button"tabindex="-1"><ahref="../../regex/all.html"title="show sidebar"></a></div><inputclass="search-input"name="search"aria-label="Run search in the documentation"autocomplete="off"spellcheck="false"placeholder="Click or press ‘S’ to search, ‘?’ for more options…"type="search"><divid="help-button"tabindex="-1"><ahref="../../help.html"title="help">?</a></div><divid="settings-menu"tabindex="-1"><ahref="../../settings.html"title="settings"><imgwidth="22"height="22"alt="Change settings"src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><sectionid="main-content"class="content"><divclass="main-heading"><h1>Struct <ahref="../index.html">regex</a>::<wbr><ahref="index.html">bytes</a>::<wbr><aclass="struct"href="#">Captures</a><buttonid="copy-path"title="Copy item path to clipboard"><imgsrc="../../static.files/clipboard-7571035ce49a181d.svg"width="19"height="18"alt="Copy item path"></button></h1><spanclass="out-of-band"><aclass="src"href="../../src/regex/regex/bytes.rs.html#1637-1641">source</a> · <buttonid="toggle-all-docs"title="collapse all docs">[<span>−</span>]</button></span></div><preclass="rust item-decl"><code>pub struct Captures<'h> { <spanclass="comment">/* private fields */</span> }</code></pre><detailsclass="toggle top-doc"open><summaryclass="hideme"><span>Expand description</span></summary><divclass="docblock"><p>Represents the capture groups for a single match.</p>
<p>Capture groups refer to parts of a regex enclosed in parentheses. They
can be optionally named. The purpose of capture groups is to be able to
reference different parts of a match based on the original pattern. In
essence, a <code>Captures</code> is a container of <ahref="struct.Match.html"title="struct regex::bytes::Match"><code>Match</code></a> values for each group
that participated in a regex match. Each <code>Match</code> can be looked up by either
its capture group index or name (if it has one).</p>
<p>For example, say you want to match the individual letters in a 5-letter
<li>The group at index <code>0</code> corresponds to the overall match. It is always
present in every match and never has a name.</li>
<li>The group at index <code>1</code> with name <code>first</code> corresponding to the first
letter.</li>
<li>The group at index <code>2</code> with no name corresponding to the second letter.</li>
<li>The group at index <code>3</code> with name <code>last</code> corresponding to the fifth and
last letter.</li>
</ul>
<p>Notice that <code>(?:\w)</code> was not listed above as a capture group despite it
being enclosed in parentheses. That’s because <code>(?:pattern)</code> is a special
syntax that permits grouping but <em>without</em> capturing. The reason for not
treating it as a capture is that tracking and reporting capture groups
requires additional state that may lead to slower searches. So using as few
capture groups as possible can help performance. (Although the difference
in performance of a couple of capture groups is likely immaterial.)</p>
<p>Values with this type are created by <ahref="struct.Regex.html#method.captures"title="method regex::bytes::Regex::captures"><code>Regex::captures</code></a> or
</div></details><h2id="implementations"class="section-header">Implementations<ahref="#implementations"class="anchor">§</a></h2><divid="implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-Captures%3C'h%3E"class="impl"><aclass="src rightside"href="../../src/regex/regex/bytes.rs.html#1643-1913">source</a><ahref="#impl-Captures%3C'h%3E"class="anchor">§</a><h3class="code-header">impl<'h><aclass="struct"href="struct.Captures.html"title="struct regex::bytes::Captures">Captures</a><'h></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.get"class="method"><aclass="src rightside"href="../../src/regex/regex/bytes.rs.html#1667-1671">source</a><h4class="code-header">pub fn <ahref="#method.get"class="fn">get</a>(&self, i: <aclass="primitive"href="https://doc.rust-lang.org/1.78.0/std/primitive.usize.html">usize</a>) -><aclass="enum"href="https://doc.rust-lang.org/1.78.0/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="struct.Match.html"title="struct regex::bytes::Match">Match</a><'h>></h4></section></summary><divclass="docblock"><p>Returns the <code>Match</code> associated with the capture group at index <code>i</code>. If
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.name"class="method"><aclass="src rightside"href="../../src/regex/regex/bytes.rs.html#1703-1707">source</a><h4class="code-header">pub fn <ahref="#method.name"class="fn">name</a>(&self, name: &<aclass="primitive"href="https://doc.rust-lang.org/1.78.0/std/primitive.str.html">str</a>) -><aclass="enum"href="https://doc.rust-lang.org/1.78.0/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="struct.Match.html"title="struct regex::bytes::Match">Match</a><'h>></h4></section></summary><divclass="docblock"><p>Returns the <code>Match</code> associated with the capture group named <code>name</code>. If
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.expand"class="method"><aclass="src rightside"href="../../src/regex/regex/bytes.rs.html#1858-1860">source</a><h4class="code-header">pub fn <ahref="#method.expand"class="fn">expand</a>(&self, replacement: &[<aclass="primitive"href="https://doc.rust-lang.org/1.78.0/std/primitive.u8.html">u8</a>], dst: &mut <aclass="struct"href="https://doc.rust-lang.org/1.78.0/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="primitive"href="https://doc.rust-lang.org/1.78.0/std/primitive.u8.html">u8</a>>)</h4></section></summary><divclass="docblock"><p>Expands all instances of <code>$ref</code> in <code>replacement</code> to the corresponding
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.iter"class="method"><aclass="src rightside"href="../../src/regex/regex/bytes.rs.html#1888-1890">source</a><h4class="code-header">pub fn <ahref="#method.iter"class="fn">iter</a><'c>(&'c self) -><aclass="struct"href="struct.SubCaptureMatches.html"title="struct regex::bytes::SubCaptureMatches">SubCaptureMatches</a><'c, 'h><ahref="#"class="tooltip"data-notable-ty="SubCaptureMatches<'c, 'h>">ⓘ</a></h4></section></summary><divclass="docblock"><p>Returns an iterator over all capture groups. This includes both
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.len"class="method"><aclass="src rightside"href="../../src/regex/regex/bytes.rs.html#1910-1912">source</a><h4class="code-header">pub fn <ahref="#method.len"class="fn">len</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/1.78.0/std/primitive.usize.html">usize</a></h4></section></summary><divclass="docblock"><p>Returns the total number of capture groups. This includes both
<p>The length returned is always equivalent to the number of elements
yielded by <ahref="struct.Captures.html#method.iter"title="method regex::bytes::Captures::iter"><code>Captures::iter</code></a>. Consequently, the length is always
greater than zero since every <code>Captures</code> value always includes the
</div></details></div></details></div><h2id="trait-implementations"class="section-header">Trait Implementations<ahref="#trait-implementations"class="anchor">§</a></h2><divid="trait-implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-Debug-for-Captures%3C'h%3E"class="impl"><aclass="src rightside"href="../../src/regex/regex/bytes.rs.html#1915-1976">source</a><ahref="#impl-Debug-for-Captures%3C'h%3E"class="anchor">§</a><h3class="code-header">impl<'h><aclass="trait"href="https://doc.rust-lang.org/1.78.0/core/fmt/trait.Debug.html"title="trait core::fmt::Debug">Debug</a> for <aclass="struct"href="struct.Captures.html"title="struct regex::bytes::Captures">Captures</a><'h></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.fmt"class="method trait-impl"><aclass="src rightside"href="../../src/regex/regex/bytes.rs.html#1916-1975">source</a><ahref="#method.fmt"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.78.0/core/fmt/trait.Debug.html#tymethod.fmt"class="fn">fmt</a>(&self, f: &mut <aclass="struct"href="https://doc.rust-lang.org/1.78.0/core/fmt/struct.Formatter.html"title="struct core::fmt::Formatter">Formatter</a><'_>) -><aclass="type"href="https://doc.rust-lang.org/1.78.0/core/fmt/type.Result.html"title="type core::fmt::Result">Result</a></h4></section></summary><divclass='docblock'>Formats the value using the given formatter. <ahref="https://doc.rust-lang.org/1.78.0/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-Index%3C%26str%3E-for-Captures%3C'h%3E"class="impl"><aclass="src rightside"href="../../src/regex/regex/bytes.rs.html#2020-2028">source</a><ahref="#impl-Index%3C%26str%3E-for-Captures%3C'h%3E"class="anchor">§</a><h3class="code-header">impl<'h, 'n><aclass="trait"href="https://doc.rust-lang.org/1.78.0/core/ops/index/trait.Index.html"title="trait core::ops::index::Index">Index</a><&'n <aclass="primitive"href="https://doc.rust-lang.org/1.78.0/std/primitive.str.html">str</a>> for <aclass="struct"href="struct.Captures.html"title="struct regex::bytes::Captures">Captures</a><'h></h3></section></summary><divclass="docblock"><p>Get a matching capture group’s haystack substring by name.</p>
<code><ahref="https://doc.rust-lang.org/1.78.0/core/convert/trait.From.html"title="trait core::convert::From">From</a><T> for U</code> chooses to do.</p>
</div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-TryFrom%3CU%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#805-807">source</a><ahref="#impl-TryFrom%3CU%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T, U><aclass="trait"href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><U> for T<divclass="where">where
U: <aclass="trait"href="https://doc.rust-lang.org/1.78.0/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><T>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle"open><summary><sectionid="associatedtype.Error-1"class="associatedtype trait-impl"><ahref="#associatedtype.Error-1"class="anchor">§</a><h4class="code-header">type <ahref="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html#associatedtype.Error"class="associatedtype">Error</a> = <aclass="enum"href="https://doc.rust-lang.org/1.78.0/core/convert/enum.Infallible.html"title="enum core::convert::Infallible">Infallible</a></h4></section></summary><divclass='docblock'>The type returned in the event of a conversion error.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.try_from"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#812">source</a><ahref="#method.try_from"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html#tymethod.try_from"class="fn">try_from</a>(value: U) -><aclass="enum"href="https://doc.rust-lang.org/1.78.0/core/result/enum.Result.html"title="enum core::result::Result">Result</a><T, <T as <aclass="trait"href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><U>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><divclass='docblock'>Performs the conversion.</div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-TryInto%3CU%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#790-792">source</a><ahref="#impl-TryInto%3CU%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T, U><aclass="trait"href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryInto.html"title="trait core::convert::TryInto">TryInto</a><U> for T<divclass="where">where
U: <aclass="trait"href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle"open><summary><sectionid="associatedtype.Error"class="associatedtype trait-impl"><ahref="#associatedtype.Error"class="anchor">§</a><h4class="code-header">type <ahref="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryInto.html#associatedtype.Error"class="associatedtype">Error</a> = <U as <aclass="trait"href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><divclass='docblock'>The type returned in the event of a conversion error.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.try_into"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#797">source</a><ahref="#method.try_into"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryInto.html#tymethod.try_into"class="fn">try_into</a>(self) -><aclass="enum"href="https://doc.rust-lang.org/1.78.0/core/result/enum.Result.html"title="enum core::result::Result">Result</a><U, <U as <aclass="trait"href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><divclass='docblock'>Performs the conversion.</div></details></div></details></div><scripttype="text/json"id="notable-traits-data">{"&'a [u8]":"<h3>Notable traits for <code>&[<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.78.0/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.78.0/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &[<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.78.0/std/primitive.u8.html\">u8</a>]</div>","SubCaptureMatches<'c, 'h>":"<h3>Notable traits for <code><a class=\"struct\" href=\"struct.SubCaptureMatches.html\" title=\"struct regex::bytes::SubCaptureMatches\">SubCaptureMatches</a><'c, 'h></code></h3><pre><code><div class=\"where\">impl<'c, 'h> <a class=\"trait\" href=\"https://doc.rust-lang.org/1.78.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"struct.SubCaptureMatches.html\" title=\"struct regex::bytes::SubCaptureMatches\">SubCaptureMatches</a><'c, 'h></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.78.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"enum\" href=\"https://doc.rust-lang.org/1.78.0/core/option/enum.Option.html\" title=\"enum core::option::Option\">Option</a><<a class=\"struct\" href=\"struct.Match.html\" title=\"struct regex::bytes::Match\">Match</a><'h>>;</div>"}</script></section></div></main></body></html>