Files
hustoj/web/cppreference-zh/chmhelp/cpp-regex.html
2025-08-01 12:57:54 +08:00

255 lines
19 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>&#27491;&#21017;&#34920;&#36798;&#24335;&#24211;</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_regex skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#27491;&#21017;&#34920;&#36798;&#24335;&#24211;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#27491;&#21017;&#34920;&#36798;&#24335;&#24211;&#25552;&#20379;&#34920;&#31034;<a href="https://en.wikipedia.org/wiki/Regular_expression" class="extiw" title="enwiki:Regular expression">&#27491;&#21017;&#34920;&#36798;&#24335;</a>&#30340;&#31867;&#65292;&#27491;&#21017;&#34920;&#36798;&#24335;&#26159;&#19968;&#31181;&#29992;&#20110;&#22312;&#23383;&#31526;&#20018;&#20013;&#21305;&#37197;&#27169;&#24335;&#30340;&#24494;&#22411;&#35821;&#35328;&#12290;&#19979;&#21015;&#25968;&#31181;&#23545;&#35937;&#19978;&#30340;&#25805;&#20316;&#33021;&#21051;&#30011;&#20960;&#20046;&#25152;&#26377;&#24102;&#27491;&#21017;&#34920;&#36798;&#24335;&#30340;&#25805;&#20316;&#65306;</p>
<ul>
<li><b>&#30446;&#26631;&#24207;&#21015;</b>&#12290;&#20026;&#27169;&#24335;&#32780;&#25628;&#32034;&#21040;&#30340;&#23383;&#31526;&#24207;&#21015;&#12290;&#36825;&#21487;&#20197;&#26159;&#20108;&#20010;&#36845;&#20195;&#22120;&#25152;&#25351;&#23450;&#30340;&#33539;&#22260;&#12289;&#31354;&#32456;&#27490;&#23383;&#31526;&#20018;&#25110;&#19968;&#20010; <span class="t-lc"><a href="cpp-string-basic_string.html">std::string</a></span> &#12290;</li>
</ul>
<ul>
<li><b>&#27169;&#24335;</b>&#12290;&#36825;&#26159;&#27491;&#21017;&#34920;&#36798;&#24335;&#33258;&#36523;&#12290;&#23427;&#30830;&#23450;&#26500;&#25104;&#21305;&#37197;&#32773;&#12290;&#23427;&#26159;&#20174;&#24102;&#29305;&#23450;&#35821;&#27861;&#30340;&#23383;&#31526;&#20018;&#26500;&#25104;&#30340; <span class="t-lc"><a href="cpp-regex-basic_regex.html">std::basic_regex</a></span> &#31867;&#22411;&#23545;&#35937;&#12290;&#21463;&#25903;&#25345;&#30340;&#35821;&#27861;&#21464;&#20307;&#30340;&#25551;&#36848;&#35265; <a href="cpp-regex-syntax_option_type.html">syntax_option_type</a> &#12290;</li>
</ul>
<ul>
<li><b>&#21305;&#37197;&#30340;&#25968;&#32452;</b>&#12290;&#20851;&#20110;&#21305;&#37197;&#30340;&#20449;&#24687;&#21487;&#20316;&#20026; <span class="t-lc"><a href="cpp-regex-match_results.html">std::match_results</a></span> &#31867;&#22411;&#23545;&#35937;&#33719;&#21462;&#12290;</li>
</ul>
<ul>
<li><b>&#26367;&#25442;&#23383;&#31526;&#20018;</b>&#12290;&#36825;&#26159;&#30830;&#23450;&#22914;&#20309;&#26367;&#25442;&#21305;&#37197;&#30340;&#23383;&#31526;&#20018;&#65292;&#21463;&#25903;&#25345;&#30340;&#35821;&#27861;&#21464;&#20307;&#30340;&#25551;&#36848;&#35265; <a href="cpp-regex-match_flag_type.html">match_flag_type</a> &#12290;</li>
</ul>
<h3><span class="mw-headline" id=".E4.B8.BB.E7.B1.BB">&#20027;&#31867;</span></h3>
<p>&#36825;&#20123;&#31867;&#23553;&#35013;&#27491;&#21017;&#34920;&#36798;&#24335;&#21644;&#22312;&#23383;&#31526;&#30340;&#30446;&#26631;&#24207;&#21015;&#20013;&#21305;&#37197;&#27491;&#21017;&#34920;&#36798;&#24335;&#30340;&#32467;&#26524;&#12290;</p>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-basic_regex.html"><span class="t-lines"><span>basic_regex</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#27491;&#21017;&#34920;&#36798;&#24335;&#23545;&#35937;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-sub_match.html"><span class="t-lines"><span>sub_match</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#26631;&#35782;&#23376;&#34920;&#36798;&#24335;&#25152;&#21305;&#37197;&#30340;&#23383;&#31526;&#24207;&#21015;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-match_results.html"><span class="t-lines"><span>match_results</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#26631;&#35782;&#19968;&#20010;&#27491;&#21017;&#34920;&#36798;&#24335;&#21305;&#37197;&#65292;&#21253;&#21547;&#25152;&#26377;&#23376;&#34920;&#36798;&#24335;&#21305;&#37197;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E7.AE.97.E6.B3.95">&#31639;&#27861;</span></h3>
<p>&#36825;&#20123;&#31639;&#27861;&#23558;&#23553;&#35013;&#20110; regex &#30340;&#27491;&#21017;&#34920;&#36798;&#24335;&#24212;&#29992;&#21040;&#23383;&#31526;&#30340;&#30446;&#26631;&#24207;&#21015;&#12290;</p>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-regex_match.html"><span class="t-lines"><span>regex_match</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#23581;&#35797;&#21305;&#37197;&#19968;&#20010;&#27491;&#21017;&#34920;&#36798;&#24335;&#21040;&#25972;&#20010;&#23383;&#31526;&#24207;&#21015;<br />
<span class="t-mark">(&#20989;&#25968;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-regex_search.html"><span class="t-lines"><span>regex_search</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#23581;&#35797;&#21305;&#37197;&#19968;&#20010;&#27491;&#21017;&#34920;&#36798;&#24335;&#21040;&#23383;&#31526;&#24207;&#21015;&#30340;&#20219;&#20309;&#37096;&#20998;<br />
<span class="t-mark">(&#20989;&#25968;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-regex_replace.html"><span class="t-lines"><span>regex_replace</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#20197;&#26684;&#24335;&#21270;&#30340;&#26367;&#25442;&#25991;&#26412;&#26469;&#26367;&#25442;&#27491;&#21017;&#34920;&#36798;&#24335;&#21305;&#37197;&#30340;&#20986;&#29616;&#20301;&#32622;<br />
<span class="t-mark">(&#20989;&#25968;&#27169;&#26495;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.BF.AD.E4.BB.A3.E5.99.A8">&#36845;&#20195;&#22120;</span></h3>
<p>regex_iterator &#29992;&#20110;&#36941;&#21382;&#22312;&#24207;&#21015;&#20013;&#25214;&#21040;&#30340;&#21305;&#37197;&#27491;&#21017;&#34920;&#36798;&#24335;&#30340;&#25972;&#20010;&#38598;&#21512;&#12290;</p>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-regex_iterator.html"><span class="t-lines"><span>regex_iterator</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#36845;&#20195;&#19968;&#20010;&#23383;&#31526;&#24207;&#21015;&#20013;&#30340;&#25152;&#26377;&#27491;&#21017;&#34920;&#36798;&#24335;&#21305;&#37197;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-regex_token_iterator.html"><span class="t-lines"><span>regex_token_iterator</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#36845;&#20195;&#32473;&#23450;&#23383;&#31526;&#20018;&#20013;&#30340;&#25152;&#26377;&#27491;&#21017;&#34920;&#36798;&#24335;&#21305;&#37197;&#20013;&#30340;&#25351;&#23450;&#23376;&#34920;&#36798;&#24335;&#65292;&#25110;&#36845;&#20195;&#26410;&#21305;&#37197;&#30340;&#23376;&#23383;&#31526;&#20018;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.BC.82.E5.B8.B8">&#24322;&#24120;</span></h3>
<p>&#27492;&#31867;&#23450;&#20041;&#20316;&#20026;&#24322;&#24120;&#25243;&#20986;&#20197;&#25253;&#21578;&#26469;&#33258;&#27491;&#21017;&#34920;&#36798;&#24335;&#24211;&#38169;&#35823;&#30340;&#31867;&#22411;&#12290;</p>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-regex_error.html"><span class="t-lines"><span>regex_error</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#25253;&#21578;&#27491;&#21017;&#34920;&#36798;&#24335;&#24211;&#29983;&#25104;&#30340;&#38169;&#35823;<br />
<span class="t-mark">(&#31867;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E7.89.B9.E5.BE.81">&#29305;&#24449;</span></h3>
<p>regex_traits &#31867;&#29992;&#20110;&#23553;&#35013; regex &#30340;&#26412;&#22320;&#21270;&#26041;&#38754;&#12290;</p>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-regex_traits.html"><span class="t-lines"><span>regex_traits</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#25552;&#20379;&#27491;&#21017;&#34920;&#36798;&#24335;&#24211;&#25152;&#38656;&#30340;&#20851;&#20110;&#23383;&#31526;&#31867;&#22411;&#30340;&#20803;&#20449;&#24687;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.B8.B8.E9.87.8F">&#24120;&#37327;</span></h3>
<table class="t-dsc-begin">
<tr class="t-dsc-header">
<td colspan="2">
<div>&#23450;&#20041;&#20110;&#21629;&#21517;&#31354;&#38388; <code>std::regex_constants</code></div>
</td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-syntax_option_type.html"><span class="t-lines"><span>syntax_option_type</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#25511;&#21046;&#27491;&#21017;&#34920;&#36798;&#24335;&#34892;&#20026;&#30340;&#36890;&#29992;&#36873;&#39033;<br />
<span class="t-mark">(typedef)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-match_flag_type.html"><span class="t-lines"><span>match_flag_type</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#29305;&#23450;&#20110;&#21305;&#37197;&#30340;&#36873;&#39033;<br />
<span class="t-mark">(typedef)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-regex-error_type.html"><span class="t-lines"><span>error_type</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#25551;&#36848;&#19981;&#21516;&#31867;&#22411;&#30340;&#21305;&#37197;&#38169;&#35823;<br />
<span class="t-mark">(typedef)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">&#31034;&#20363;</span></h3>
<div class="t-example">
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#include &lt;iostream&gt;</span>
<span class="co2">#include &lt;iterator&gt;</span>
<span class="co2">#include &lt;string&gt;</span>
<span class="co2">#include &lt;regex&gt;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> s <span class="sy1">=</span> <span class="st0">&quot;Some people, when confronted with a problem, think &quot;</span>
<span class="st0">&quot;<span class="es1">\&quot;</span>I know, I&#39;ll use regular expressions.<span class="es1">\&quot;</span> &quot;</span>
<span class="st0">&quot;Now they have two problems.&quot;</span><span class="sy4">;</span>
<a href="cpp-regex-basic_regex.html"><span class="kw2000">std::<span class="me2">regex</span></span></a> self_regex<span class="br0">(</span><span class="st0">&quot;REGULAR EXPRESSIONS&quot;</span>,
<a href="cpp-regex-syntax_option_type.html"><span class="kw2032">std::<span class="me2">regex_constants</span><span class="sy4">::</span><span class="me2">ECMAScript</span></span></a> <span class="sy3">|</span> <a href="cpp-regex-syntax_option_type.html"><span class="kw2028">std::<span class="me2">regex_constants</span><span class="sy4">::</span><span class="me2">icase</span></span></a><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span><a href="cpp-regex-regex_search.html"><span class="kw2013">std::<span class="me2">regex_search</span></span></a><span class="br0">(</span>s, self_regex<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;Text contains the phrase &#39;regular expressions&#39;<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span>
<a href="cpp-regex-basic_regex.html"><span class="kw2000">std::<span class="me2">regex</span></span></a> word_regex<span class="br0">(</span><span class="st0">&quot;(<span class="es1">\\</span>w+)&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">auto</span> words_begin <span class="sy1">=</span>
<a href="cpp-regex-regex_iterator.html"><span class="kw2018">std::<span class="me2">sregex_iterator</span></span></a><span class="br0">(</span>s.<span class="me1">begin</span><span class="br0">(</span><span class="br0">)</span>, s.<span class="me1">end</span><span class="br0">(</span><span class="br0">)</span>, word_regex<span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">auto</span> words_end <span class="sy1">=</span> <a href="cpp-regex-regex_iterator.html"><span class="kw2018">std::<span class="me2">sregex_iterator</span></span></a><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;Found &quot;</span>
<span class="sy1">&lt;&lt;</span> <a href="cpp-iterator-distance.html"><span class="kw673">std::<span class="me2">distance</span></span></a><span class="br0">(</span>words_begin, words_end<span class="br0">)</span>
<span class="sy1">&lt;&lt;</span> <span class="st0">&quot; words<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="kw4">const</span> <span class="kw4">int</span> N <span class="sy1">=</span> <span class="nu0">6</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;Words longer than &quot;</span> <span class="sy1">&lt;&lt;</span> N <span class="sy1">&lt;&lt;</span> <span class="st0">&quot; characters:<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><a href="cpp-regex-regex_iterator.html"><span class="kw2018">std::<span class="me2">sregex_iterator</span></span></a> i <span class="sy1">=</span> words_begin<span class="sy4">;</span> i <span class="sy3">!</span><span class="sy1">=</span> words_end<span class="sy4">;</span> <span class="sy2">++</span>i<span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-regex-match_results.html"><span class="kw2010">std::<span class="me2">smatch</span></span></a> match <span class="sy1">=</span> <span class="sy2">*</span>i<span class="sy4">;</span>
<a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> match_str <span class="sy1">=</span> match.<span class="me1">str</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>match_str.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&gt;</span> N<span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot; &quot;</span> <span class="sy1">&lt;&lt;</span> match_str <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<a href="cpp-regex-basic_regex.html"><span class="kw2000">std::<span class="me2">regex</span></span></a> long_word_regex<span class="br0">(</span><span class="st0">&quot;(<span class="es1">\\</span>w{7,})&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> new_s <span class="sy1">=</span> <a href="cpp-regex-regex_replace.html"><span class="kw2014">std::<span class="me2">regex_replace</span></span></a><span class="br0">(</span>s, long_word_regex, <span class="st0">&quot;[$&amp;]&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> new_s <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">Text contains the phrase &#39;regular expressions&#39;
Found 20 words
Words longer than 6 characters:
confronted
problem
regular
expressions
problems
Some people, when [confronted] with a [problem], think
&quot;I know, I&#39;ll use [regular] [expressions].&quot; Now they have two [problems].</pre></div>
</div>
</div>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>