上传cppreference

This commit is contained in:
2025-08-01 12:57:54 +08:00
parent e29892f8cd
commit 196e706fe4
5485 changed files with 982007 additions and 3 deletions

View File

@@ -0,0 +1,641 @@
<!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>&#25913; ECMAScript &#27491;&#21017;&#34920;&#36798;&#24335;&#25991;&#27861;</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_ecmascript skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#25913; ECMAScript &#27491;&#21017;&#34920;&#36798;&#24335;&#25991;&#27861;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-regex.html">regex</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#27492;&#39029;&#38754;&#25551;&#36848;&#20197;&#35774;&#32622;&#20026; <code>ECMAScript</code> &#65288;&#40664;&#35748;&#20540;&#65289;&#30340; <a href="cpp-regex-syntax_option_type.html"><tt>syntax_option_type</tt></a> &#26500;&#36896; <span class="t-lc"><a href="cpp-regex-basic_regex.html">std::basic_regex</a></span> &#26102;&#20351;&#29992;&#30340;&#25991;&#27861;&#12290;&#20854;&#20182;&#21463;&#25903;&#25345;&#27491;&#21017;&#34920;&#36798;&#24335;&#25991;&#27861;&#35265; <a href="cpp-regex-syntax_option_type.html"><tt>syntax_option_type</tt></a> &#12290;</p>
<p>C++ &#20013;&#30340; <code>ECMAScript</code> 3 &#27491;&#21017;&#34920;&#36798;&#24335;&#25991;&#27861;&#26159;&#24102;&#26631;&#35760;&#26377;&#21518;&#36848; <span class="t-mark">(&#20165; C++)</span> &#30340;&#20462;&#25913;&#30340; <a rel="nofollow" class="external text" href="http://ecma-international.org/ecma-262/5.1/#sec-15.10">ECMA-262 &#25991;&#27861;</a>&#12290;</p>
<h3><span class="mw-headline" id=".E6.80.BB.E8.A7.88">&#24635;&#35272;</span></h3>
<p><a rel="nofollow" class="external text" href="https://eel.is/c++draft/re.grammar">&#25913;&#27491;&#21017;&#34920;&#36798;&#24335;&#25991;&#27861;</a>&#20960;&#20046;&#26159; ECMAScript RegExp &#25991;&#27861;&#24102;&#19978;<i>&#31867;&#21407;&#23376; (ClassAtom)</i> &#19979;&#30340;&#26412;&#22320;&#29615;&#22659;&#19978;&#30340; POSIX &#31867;&#22411;&#23637;&#24320;&#12290;&#25105;&#20204;&#20316;&#20986;&#20102;&#30456;&#31561;&#26816;&#26597;&#19982;&#25968;&#37327;&#20998;&#26512;&#19978;&#30340;&#19968;&#20123;&#28548;&#28165;&#12290;&#23545;&#20110;&#27492;&#22788;&#30340;&#22810;&#25968;&#31034;&#20363;&#65292;&#20320;&#21487;&#20197;&#22312;&#20320;&#30340;&#27983;&#35272;&#22120;&#25511;&#21046;&#21488;&#20013;&#23581;&#35797;&#27492;&#31561;&#20215;&#29256;&#26412;&#65306;</p>
<pre>function match(s, re) { return s.match(new RegExp(re)); }
</pre>
<p>&#26631;&#20934;&#20013;&#30340;&ldquo;&#27491;&#24335;&#24341;&#29992;&rdquo;&#25351;&#23450; ECMAScript 3 &#12290;&#25105;&#20204;&#20110;&#27492;&#38142;&#25509;&#21040; ECMAScript 5.1 &#35268;&#33539;&#65292;&#22240;&#20026;&#20854;&#27491;&#21017;&#34920;&#36798;&#24335;&#25991;&#27861;&#30456;&#27604; ECMAScript 3 &#20165;&#26377;&#24494;&#23567;&#25913;&#21160;&#65292;&#32780;&#19988;&#23427;&#26377;&#19968;&#20010; HTML &#29256;&#26412;&#12290;&#26041;&#35328;&#29305;&#24615;&#30340;&#27010;&#35272;&#35265; <a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions">MDN Guide on JavaScript RegExp</a> &#12290;</p>
<h3><span class="mw-headline" id=".E5.8F.AF.E9.80.89.E9.A1.B9">&#21487;&#36873;&#39033;</span></h3>
<p>&#27491;&#21017;&#34920;&#36798;&#24335;&#27169;&#24335;&#26159;&#19968;&#25110;&#22810;&#20010;&#20197;&#26512;&#21462;&#36816;&#31639;&#31526; <code><b>|</b></code> &#20998;&#38548;&#30340;&#21487;&#36873;&#39033;<i>&#21487;&#36873;&#39033; (Alternative)</i> &#24207;&#21015;&#65288;&#25442;&#35328;&#20043;&#65292;&#26512;&#21462;&#36816;&#31639;&#31526;&#25317;&#26377;&#26368;&#20302;&#20248;&#20808;&#32423;&#65289;</p>
<p><i>Pattern</i>&nbsp;::</p>
<dl>
<dd><i>Disjunction</i></dd>
</dl>
<p><i>Disjunction</i>&nbsp;::</p>
<dl>
<dd><i>Alternative</i></dd>
<dd><i>Alternative</i> <code><b>|</b></code> <i>Disjunction</i></dd>
</dl>
<p>&#27169;&#24335;&#39318;&#20808;&#23581;&#35797;&#36339;&#36807;<i>&#26512;&#21462; (Disjunction)</i> &#24182;&#21305;&#37197;&#65288;&#26512;&#21462;&#21518;&#30340;&#65289;&#21518;&#38543;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#30340;<i>&#21487;&#36873;&#39033;</i>&#12290;</p>
<p>&#33509;&#23427;&#22833;&#36133;&#65292;&#21017;&#35797;&#22270;&#36339;&#36807;&#24038;&#20391;<i>&#21487;&#36873;&#39033;</i>&#24182;&#21305;&#37197;&#21491;&#20391;<i>&#26512;&#21462;</i>&#65288;&#21518;&#38543;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#65289;&#12290;</p>
<p>&#33509;&#24038;&#20391;<i>&#21487;&#36873;&#39033;</i>&#12289;&#21491;&#20391;<i>&#26512;&#21462;</i>&#21644;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#37117;&#25317;&#26377;&#36873;&#25321;&#28857;&#65292;&#21017;&#22312;&#23581;&#35797;&#31227;&#21160;&#21040;&#24038;&#20391;<i>&#21487;&#36873;&#39033;</i>&#20013;&#30340;&#19979;&#20010;&#36873;&#25321;&#21069;&#65292;&#23581;&#35797;&#21097;&#20313;&#34920;&#36798;&#24335;&#20540;&#20013;&#30340;&#25152;&#26377;&#36873;&#25321;&#12290;&#33509;&#31351;&#23613;&#20102;&#24038;&#20391;<i>&#21487;&#36873;&#39033;</i>&#20013;&#30340;&#25152;&#26377;&#36873;&#25321;&#65292;&#21017;&#21462;&#20195;&#24038;&#20391;<i>&#21487;&#36873;&#39033;</i>&#23581;&#35797;&#21491;&#20391;<i>&#26512;&#21462;</i>&#12290;</p>
<p>&#36339;&#36807;&#30340;<i>&#21487;&#36873;&#39033;</i>&#20869;&#30340;&#20219;&#20309;&#25429;&#33719;&#25324;&#21495;&#20135;&#29983;&#31354;&#23376;&#21305;&#37197;&#12290;</p>
<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;regex&gt;</span>
<span class="co1">// TODO &#65306;&#36716;&#25442;&#21040;&#25509;&#21463;&#23485;&#23383;&#31526;&#24207;&#21015;</span>
<span class="co1">// std::match_results&lt;std::basic_string&lt;_ch&gt;::const_iterator&gt; m; &#19981;&#34892;&#12290;</span>
<span class="kw4">void</span> show_matches<span class="br0">(</span><span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> in, <span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> re<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> m<span class="sy4">;</span>
<a href="cpp-regex-regex_search.html"><span class="kw2013">std::<span class="me2">regex_search</span></span></a><span class="br0">(</span>in, m, <a href="cpp-regex-basic_regex.html"><span class="kw2000">std::<span class="me2">regex</span></span></a><span class="br0">(</span>re<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span><span class="br0">(</span>m.<span class="me1">empty</span><span class="br0">(</span><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;input=[&quot;</span> <span class="sy1">&lt;&lt;</span> in <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;], regex=[&quot;</span> <span class="sy1">&lt;&lt;</span> re <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]: NO MATCH<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="kw1">else</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;input=[&quot;</span> <span class="sy1">&lt;&lt;</span> in <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;], regex=[&quot;</span> <span class="sy1">&lt;&lt;</span> re <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]: &quot;</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;prefix=[&quot;</span> <span class="sy1">&lt;&lt;</span> m.<span class="me1">prefix</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] &quot;</span><span class="sy4">;</span>
<span class="kw1">for</span><span class="br0">(</span><a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> n <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> n <span class="sy1">&lt;</span> m.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="sy2">++</span>n<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; m[&quot;</span> <span class="sy1">&lt;&lt;</span> n <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]=[&quot;</span> <span class="sy1">&lt;&lt;</span> m<span class="br0">[</span>n<span class="br0">]</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] &quot;</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;suffix=[&quot;</span> <span class="sy1">&lt;&lt;</span> m.<span class="me1">suffix</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
show_matches<span class="br0">(</span><span class="st0">&quot;abcdef&quot;</span>, <span class="st0">&quot;abc|def&quot;</span><span class="br0">)</span><span class="sy4">;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;abc&quot;</span>, <span class="st0">&quot;ab|abc&quot;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#39318;&#20808;&#21305;&#37197;&#24038;&#20391;&#21487;&#36873;&#39033;</span>
<span class="co1">// &#38024;&#23545;&#21518;&#38543;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335; (c|bc) &#24038;&#20391;&#21487;&#36873;&#39033; (a) &#30340;&#21305;&#37197;&#25104;&#21151;</span>
<span class="co1">// &#23427;&#29983;&#25104; m[1]=&quot;a&quot; &#21450; m[4]=&quot;bc&quot; &#12290;</span>
<span class="co1">// &#36339;&#36807;&#30340;&#21487;&#36873;&#39033; (ab) &#21644; (c) &#23558;&#20854;&#23376;&#21305;&#37197; m[3] &#21644; m[5] &#32622;&#20026;&#31354;&#12290;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;abc&quot;</span>, <span class="st0">&quot;((a)|(ab))((c)|(bc))&quot;</span><span class="br0">)</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">input=[abcdef], regex=[abc|def]: prefix=[] m[0]=[abc] suffix=[def]
input=[abc], regex=[ab|abc]: prefix=[] m[0]=[ab] suffix=[c]
input=[abc], regex=[((a)|(ab))((c)|(bc))]: prefix=[] m[0]=[abc]
m[1]=[a] m[2]=[a] m[3]=[] m[4]=[bc] m[5]=[] m[6]=[bc] suffix=[]</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E9.A1.B9">&#39033;</span></h3>
<p>&#27599;&#20010;<i>&#21487;&#36873;&#39033;</i>&#20026;&#31354;&#65292;&#25110;&#20026;<i>&#39033; (Term)</i> &#30340;&#24207;&#21015;&#65288;<i>&#39033;</i>&#38388;&#26080;&#20998;&#38548;&#31526;&#65289;</p>
<p><i>Alternative</i>&nbsp;::</p>
<dl>
<dd><i>[empty]</i></dd>
<dd><i>Alternative</i> <i>Term</i></dd>
</dl>
<p>&#31354;&#30340;<i>&#21487;&#36873;&#39033;</i>&#22987;&#32456;&#21305;&#37197;&#24182;&#19988;&#19981;&#28040;&#32791;&#20219;&#20309;&#36755;&#20837;&#12290;</p>
<p>&#30456;&#32487;&#30340;<i>&#39033;</i>&#23581;&#35797;&#21516;&#26102;&#21305;&#37197;&#36755;&#20837;&#30340;&#36830;&#32493;&#37096;&#20998;&#12290;</p>
<p>&#33509;&#24038;&#20391;<i>&#21487;&#36873;&#39033;</i>&#12289;&#21491;&#20391;<i>&#39033;</i>&#21644;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#25317;&#26377;&#36873;&#25321;&#28857;&#65292;&#21017;&#22312;&#31227;&#21160;&#21040;&#21491;&#20391;<i>&#39033;</i>&#20013;&#30340;&#19979;&#20010;&#36873;&#25321;&#21069;&#65292;&#23581;&#35797;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#20013;&#30340;&#25152;&#26377;&#36873;&#25321;&#65292;&#24182;&#22312;&#31227;&#21160;&#21040;&#24038;&#20391;<i>&#21487;&#36873;&#39033;</i>&#20013;&#30340;&#19979;&#20010;&#36873;&#25321;&#21069;&#65292;&#23581;&#35797;&#21491;&#20391;<i>&#39033;</i>&#20013;&#30340;&#25152;&#26377;&#36873;&#25321;&#12290;</p>
<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;regex&gt;</span>
<span class="co1">// TODO &#65306;&#36716;&#25442;&#21040;&#25509;&#21463;&#23485;&#23383;&#31526;&#24207;&#21015;</span>
<span class="co1">// std::match_results&lt;std::basic_string&lt;_ch&gt;::const_iterator&gt; m; &#19981;&#34892;&#12290;</span>
<span class="kw4">void</span> show_matches<span class="br0">(</span><span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> in, <span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> re<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> m<span class="sy4">;</span>
<a href="cpp-regex-regex_search.html"><span class="kw2013">std::<span class="me2">regex_search</span></span></a><span class="br0">(</span>in, m, <a href="cpp-regex-basic_regex.html"><span class="kw2000">std::<span class="me2">regex</span></span></a><span class="br0">(</span>re<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span><span class="br0">(</span>m.<span class="me1">empty</span><span class="br0">(</span><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;input=[&quot;</span> <span class="sy1">&lt;&lt;</span> in <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;], regex=[&quot;</span> <span class="sy1">&lt;&lt;</span> re <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]: NO MATCH<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="kw1">else</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;input=[&quot;</span> <span class="sy1">&lt;&lt;</span> in <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;], regex=[&quot;</span> <span class="sy1">&lt;&lt;</span> re <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]: &quot;</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;prefix=[&quot;</span> <span class="sy1">&lt;&lt;</span> m.<span class="me1">prefix</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] &quot;</span><span class="sy4">;</span>
<span class="kw1">for</span><span class="br0">(</span><a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> n <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> n <span class="sy1">&lt;</span> m.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="sy2">++</span>n<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; m[&quot;</span> <span class="sy1">&lt;&lt;</span> n <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]=[&quot;</span> <span class="sy1">&lt;&lt;</span> m<span class="br0">[</span>n<span class="br0">]</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] &quot;</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;suffix=[&quot;</span> <span class="sy1">&lt;&lt;</span> m.<span class="me1">suffix</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
show_matches<span class="br0">(</span><span class="st0">&quot;abcdef&quot;</span>, <span class="st0">&quot;&quot;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#31354;&#27491;&#21017;&#34920;&#36798;&#24335;&#26159;&#21333;&#20010;&#31354;&#21487;&#36873;&#39033;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;abc&quot;</span>, <span class="st0">&quot;abc|&quot;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#24038;&#21487;&#36873;&#39033;&#39318;&#20808;&#21305;&#37197;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;abc&quot;</span>, <span class="st0">&quot;|abc&quot;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#24038;&#21487;&#36873;&#39033;&#39318;&#20808;&#21305;&#37197;&#65292;&#30041;&#24453; abc &#26410;&#21305;&#37197;</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">input=[abcdef], regex=[]: prefix=[] m[0]=[] suffix=[abcdef]
input=[abc], regex=[abc|]: prefix=[] m[0]=[abc] suffix=[]
input=[abc], regex=[|abc]: prefix=[] m[0]=[] suffix=[abc]</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E6.95.B0.E9.87.8F.E8.AF.8D">&#25968;&#37327;&#35789;</span></h3>
<ul>
<li>&#27599;&#20010;<i>&#39033;</i> &#20026;<i>&#26029;&#35328; (Assertion)</i>&#65288;&#35265;&#21518;&#26041;&#65289;&#25110;<i>&#21407;&#23376; (Atom)</i> &#65288;&#35265;&#21518;&#26041;&#65289;&#65292;&#25110;<i>&#21407;&#23376;</i>&#31435;&#21363;&#21518;&#38543;<i>&#25968;&#37327;&#35789; (Quantifier)</i> &#20043;&#19968;</li>
</ul>
<p><i>Term</i>&nbsp;::</p>
<dl>
<dd><i>Assertion</i></dd>
<dd><i>Atom</i></dd>
<dd><i>Atom</i> <i>Quantifier</i></dd>
</dl>
<p>&#27599;&#20010;<i>&#25968;&#37327;&#35789;</i>&#20026;<i>&#36138;&#24515; (greedy)</i> &#25968;&#37327;&#35789;&#65288;&#20165;&#30001;&#19968;&#20010;<i>&#25968;&#37327;&#35789;&#21069;&#32512; (QuantifierPrefix)</i> &#32452;&#25104;&#65289;&#25110;<i>&#38750;&#36138;&#24515; (non-greedy)</i> &#25968;&#37327;&#35789;&#65288;&#30001;&#19968;&#20010;<i>&#25968;&#37327;&#35789;&#21069;&#32512;</i>&#21518;&#38543;&#38382;&#21495;&#25513;&#30721; <code><b>?</b></code> &#32452;&#25104;&#65289;&#12290;</p>
<p><i>Quantifier</i>&nbsp;::</p>
<dl>
<dd><i>QuantifierPrefix</i></dd>
<dd><i>QuantifierPrefix</i> <code><b>?</b></code></dd>
</dl>
<p>&#27599;&#20010;<i>&#25968;&#37327;&#35789;&#21069;&#32512;</i>&#30830;&#23450;&#20108;&#20010;&#25968;&#65306;&#26368;&#23567;&#37325;&#22797;&#25968;&#21644;&#26368;&#22823;&#37325;&#22797;&#25968;&#65292;&#22914;&#19979;&#65306;</p>
<table class="wikitable">
<tr>
<th>&#25968;&#37327;&#35789;&#21069;&#32512;</th>
<th>&#26368;&#23567;</th>
<th>&#26368;&#22823;</th>
</tr>
<tr>
<td><code><b>*</b></code></td>
<td>&#38646;</td>
<td>&#26080;&#31351;&#22823;</td>
</tr>
<tr>
<td><code><b>+</b></code></td>
<td>&#19968;</td>
<td>&#26080;&#31351;&#22823;</td>
</tr>
<tr>
<td><code><b>?</b></code></td>
<td>&#38646;</td>
<td>&#19968;</td>
</tr>
<tr>
<td><code><b>{</b></code> <i>&#21313;&#36827;&#21046;&#25968;</i> <code><b>}</b></code></td>
<td>&#21313;&#36827;&#21046;&#25968;&#30340;&#20540;</td>
<td>&#21313;&#36827;&#21046;&#25968;&#30340;&#20540;</td>
</tr>
<tr>
<td><code><b>{</b></code> <i>&#21313;&#36827;&#21046;&#25968;</i> <code><b>,</b></code> <code><b>}</b></code></td>
<td>&#21313;&#36827;&#21046;&#25968;&#30340;&#20540;</td>
<td>&#26080;&#31351;&#22823;</td>
</tr>
<tr>
<td><code><b>{</b></code> <i>&#21313;&#36827;&#21046;&#25968;</i> <code><b>,</b></code> <i>&#21313;&#36827;&#21046;&#25968;</i> <code><b>}</b></code></td>
<td>&#36887;&#21495;&#21069;&#30340;&#21313;&#36827;&#21046;&#25968;&#30340;&#20540;</td>
<td>&#36887;&#21495;&#21518;&#30340;&#21313;&#36827;&#21046;&#25968;&#30340;&#20540;</td>
</tr>
</table>
<p>&#36890;&#36807;&#22312;&#27599;&#20010;&#25968;&#20301;&#19978;&#35843;&#29992; <span class="t-lc"><a href="cpp-regex-regex_traits-value.html">std::regex_traits::value</a></span><span class="t-mark">(&#20165; C++)</span>&#33719;&#24471;&#21333;&#29420;&#30340;<i>&#21313;&#36827;&#21046;&#25968; (DecimalDigits)</i> &#30340;&#20540;&#12290;</p>
<p><i>&#21407;&#23376;</i>&#21518;&#38543;<i>&#25968;&#37327;&#35789;</i>&#37325;&#22797;<i>&#25968;&#37327;&#35789;</i>&#25152;&#25351;&#23450;&#30340;&#27425;&#25968;&#12290;<i>&#25968;&#37327;&#35789;</i>&#33021;&#20026;<i>&#38750;&#36138;&#24515;</i>&#65292;&#35813;&#24773;&#20917;&#19979;<i>&#21407;&#23376;</i>&#27169;&#24335;&#37325;&#22797;&#22312;&#20173;&#28982;&#21305;&#37197;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#30340;&#21516;&#26102;&#23613;&#21487;&#33021;&#23569;&#30340;&#27425;&#25968;&#65292;&#25110;&#33021;&#20026;<i>&#36138;&#24515;</i>&#65292;&#35813;&#24773;&#20917;&#19979;<i>&#21407;&#23376;</i>&#27169;&#24335;&#37325;&#22797;&#22312;&#20173;&#28982;&#21305;&#37197;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#30340;&#21516;&#26102;&#23613;&#21487;&#33021;&#22810;&#30340;&#27425;&#25968;&#12290;</p>
<p>&#37325;&#22797;&#30340;&#26159;<i>&#21407;&#23376;</i>&#27169;&#24335;&#65292;&#32780;&#38750;&#20854;&#25152;&#21305;&#37197;&#30340;&#36755;&#20837;&#65292;&#25925;<i>&#21407;&#23376;</i>&#30340;&#19981;&#21516;&#37325;&#22797;&#33021;&#21305;&#37197;&#19981;&#21516;&#30340;&#36755;&#20837;&#23376;&#20018;&#12290;</p>
<p>&#33509;<i>&#21407;&#23376;</i>&#21644;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#37117;&#26377;&#36873;&#25321;&#28857;&#65292;&#21017;&#39318;&#20808;&#23558;<i>&#21407;&#23376;</i>&#21305;&#37197;&#23613;&#21487;&#33021;&#23613;&#21487;&#33021;&#22810;&#65288;&#25110;&#23569;&#65292;&#33509;&#20026;<i>&#38750;&#36138;&#24515;</i>&#65289;&#27425;&#12290;&#65292;&#31227;&#21160;&#21040;<i>&#21407;&#23376;</i>&#30340;&#26368;&#21518;&#19968;&#27425;&#37325;&#22797;&#20013;&#30340;&#19979;&#20010;&#36873;&#25321;&#21069;&#65292;&#23581;&#35797;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#20013;&#30340;&#25152;&#26377;&#36873;&#25321;&#12290;&#31227;&#21160;&#21040;<i>&#21407;&#23376;</i>&#30340;&#20498;&#25968;&#31532;&#20108;&#65288;&#31532; n-1 &#65289;&#27425;&#37325;&#22797;&#20013;&#30340;&#19979;&#20010;&#36873;&#25321;&#21069;&#65292;&#23581;&#35797;<i>&#21407;&#23376;</i>&#30340;&#26368;&#21518;&#19968;&#65288;&#31532; n &#65289;&#27425;&#37325;&#22797;&#20013;&#30340;&#25152;&#26377;&#36873;&#25321;&#65307;&#22312;&#26126;&#30830;&#29616;&#22312;&#21487;&#33021;&#26377;<i>&#21407;&#23376;</i>&#30340;&#26356;&#22810;&#25110;&#26356;&#23569;&#37325;&#22797;&#26102;&#65307;&#22312;&#31227;&#21160;&#21040;<i>&#21407;&#23376;</i>&#30340;&#31532; n-1 &#27425;&#37325;&#22797;&#20013;&#30340;&#19979;&#20010;&#36873;&#25321;&#21069;&#65292;&#23558;&#36825;&#20123;&#31351;&#23613;&#65288;&#20877;&#27425;&#20197;&#23613;&#21487;&#33021;&#23569;&#25110;&#22810;&#24320;&#22987;&#65289;&#65292;&#20197;&#27492;&#31867;&#25512;&#12290;</p>
<p>&#27599;&#27425;&#37325;&#22797;<i>&#21407;&#23376;&#39;</i>&#26102;&#65292;&#28165;&#38500;&#20854;&#25429;&#33719;&#65288;&#35265;&#21518;&#26041; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="st0">&quot;(z)((a+)?(b+)?(c))*&quot;</span></span></span> &#30340;&#31034;&#20363;&#65289;</p>
<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;regex&gt;</span>
<span class="co1">// TODO &#65306;&#36716;&#25442;&#21040;&#25509;&#21463;&#23485;&#23383;&#31526;&#24207;&#21015;</span>
<span class="co1">// std::match_results&lt;std::basic_string&lt;_ch&gt;::const_iterator&gt; m; &#19981;&#34892;&#12290;</span>
<span class="kw4">void</span> show_matches<span class="br0">(</span><span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> in, <span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> re<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> m<span class="sy4">;</span>
<a href="cpp-regex-regex_search.html"><span class="kw2013">std::<span class="me2">regex_search</span></span></a><span class="br0">(</span>in, m, <a href="cpp-regex-basic_regex.html"><span class="kw2000">std::<span class="me2">regex</span></span></a><span class="br0">(</span>re<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span><span class="br0">(</span>m.<span class="me1">empty</span><span class="br0">(</span><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;input=[&quot;</span> <span class="sy1">&lt;&lt;</span> in <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;], regex=[&quot;</span> <span class="sy1">&lt;&lt;</span> re <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]: NO MATCH<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="kw1">else</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;input=[&quot;</span> <span class="sy1">&lt;&lt;</span> in <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;], regex=[&quot;</span> <span class="sy1">&lt;&lt;</span> re <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]: &quot;</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;prefix=[&quot;</span> <span class="sy1">&lt;&lt;</span> m.<span class="me1">prefix</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] &quot;</span><span class="sy4">;</span>
<span class="kw1">for</span><span class="br0">(</span><a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> n <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> n <span class="sy1">&lt;</span> m.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="sy2">++</span>n<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; m[&quot;</span> <span class="sy1">&lt;&lt;</span> n <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]=[&quot;</span> <span class="sy1">&lt;&lt;</span> m<span class="br0">[</span>n<span class="br0">]</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] &quot;</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;suffix=[&quot;</span> <span class="sy1">&lt;&lt;</span> m.<span class="me1">suffix</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="co1">// &#36138;&#24515;&#21305;&#37197;&#65292;&#37325;&#22797; [a-z] 4 &#27425;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;abcdefghi&quot;</span>, <span class="st0">&quot;a[a-z]{2,4}&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#38750;&#36138;&#24515;&#21305;&#37197;&#65292;&#37325;&#22797; [a-z] 2 &#27425;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;abcdefghi&quot;</span>, <span class="st0">&quot;a[a-z]{2,4}?&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#25968;&#37327;&#35789;&#30340;&#36873;&#25321;&#28857;&#39034;&#24207;&#65292;&#29983;&#25104;&#24102;&#20108;&#20010;&#37325;&#22797;&#30340;&#21305;&#37197;&#65292;</span>
<span class="co1">// &#31532;&#19968;&#20010;&#21305;&#37197;&#23376;&#20018; &quot;aa&quot; &#65292;&#31532;&#20108;&#20010;&#21305;&#37197;&#23376;&#20018; &quot;ba&quot; &#65292;&#20445;&#30041; &quot;ac&quot; &#21305;&#37197;</span>
<span class="co1">// &#65288;&quot;ba&quot; &#20986;&#29616;&#20110; m[1] &#30340;&#25429;&#33719;&#23376;&#21477;&#20013;&#65289;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;aabaac&quot;</span>, <span class="st0">&quot;(aa|aabaac|ba|b|c)*&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#25968;&#37327;&#35789;&#30340;&#36873;&#25321;&#28857;&#39034;&#24207;&#20196;&#27492; regex &#35745;&#31639; 10 &#19982; 15 &#38388;&#30340;&#26368;&#22823;&#20844;&#32422;&#25968;</span>
<span class="co1">// &#65288;&#31572;&#26696;&#26159; 5 &#65292;&#24182;&#20197; &quot;aaaaa&quot; &#22635;&#20805; m[1] &#65289;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;aaaaaaaaaa,aaaaaaaaaaaaaaa&quot;</span>, <span class="st0">&quot;^(a+)<span class="es1">\\</span>1*,<span class="es1">\\</span>1+$&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#23376;&#20018; &quot;bbb&quot; &#19981;&#20986;&#29616;&#20110;&#25429;&#33719;&#23376;&#21477; m[4] &#20013;</span>
<span class="co1">// &#22240;&#20026;&#23427;&#22312;&#21407;&#23376; (a+)?(b+)?(c) &#30340;&#31532;&#20108;&#27425;&#37325;&#22797;&#21305;&#37197;&#23376;&#20018; &quot;ac&quot; &#26102;&#34987;&#22768;&#26126;</span>
<span class="co1">// &#27880;&#65306; gcc &#29702;&#35299;&#26377;&#35823;&mdash;&mdash;&#23427;&#27809;&#26377;&#27491;&#30830;&#22320;&#25353; ECMA-262 21.2.2.5.1 &#28165;&#38500;</span>
<span class="co1">// matches[4] &#25429;&#33719;&#32452;&#65292;&#20174;&#32780;&#38169;&#35823;&#22320;&#23545;&#20110;&#35813;&#32452;&#25429;&#33719; &quot;bbb&quot; &#12290;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;zaacbbbcac&quot;</span>, <span class="st0">&quot;(z)((a+)?(b+)?(c))*&quot;</span><span class="br0">)</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">input=[abcdefghi], regex=[a[a-z]{2,4}]: prefix=[] m[0]=[abcde] suffix=[fghi]
input=[abcdefghi], regex=[a[a-z]{2,4}?]: prefix=[] m[0]=[abc] suffix=[defghi]
input=[aabaac], regex=[(aa|aabaac|ba|b|c)*]:
prefix=[] m[0]=[aaba] m[1]=[ba] suffix=[ac]
input=[aaaaaaaaaa,aaaaaaaaaaaaaaa], regex=[^(a+)\1*,\1+$]:
prefix=[] m[0]=[aaaaaaaaaa,aaaaaaaaaaaaaaa] m[1]=[aaaaa] suffix=[]
input=[zaacbbbcac], regex=[(z)((a+)?(b+)?(c))*]:
prefix=[] m[0]=[zaacbbbcac] m[1]=[z] m[2]=[ac] m[3]=[a] m[4]=[] m[5]=[c] suffix=[]</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E6.96.AD.E8.A8.80">&#26029;&#35328;</span></h3>
<p><i>&#26029;&#35328; (Assertion)</i> &#21305;&#37197;&#26465;&#20214;&#65292;&#32780;&#38750;&#36755;&#20837;&#23383;&#31526;&#20018;&#30340;&#23376;&#20018;&#12290;&#23427;&#20204;&#20915;&#19981;&#28040;&#32791;&#20219;&#20309;&#26469;&#33258;&#36755;&#20837;&#30340;&#23383;&#31526;&#12290;&#27599;&#20010;<i>&#26029;&#35328;</i>&#26159;&#19979;&#21015;&#20043;&#19968;</p>
<p><i>Assertion</i>&nbsp;::</p>
<dl>
<dd><code><b>^</b></code></dd>
<dd><code><b>$</b></code></dd>
<dd><code><b>\</b></code> <code><b>b</b></code></dd>
<dd><code><b>\</b></code> <code><b>B</b></code></dd>
<dd><code><b>(</b></code> <code><b>?</b></code> <code><b>=</b></code> <i>Disjunction</i> <code><b>)</b></code></dd>
<dd><code><b>(</b></code> <code><b>?</b></code> <code><b>!</b></code> <i>Disjunction</i> <code><b>)</b></code></dd>
</dl>
<p>&#26029;&#35328; <code><b>^</b></code> &#65288;&#34892;&#36215;&#22987;&#65289;&#21305;&#37197;</p>
<div class="t-li1"><span class="t-li">1)</span> &#31435;&#21363;&#21518;&#38543;<i>&#34892;&#32456;&#27490;&#31526; (LineTerminator)</i> &#23383;&#31526;&#30340;&#20301;&#32622;<span class="t-rev-inl t-until-cxx17"><span>&#65288;&#36825;&#21487;&#33021;&#19981;&#21463;&#25903;&#25345;&#65289;</span> <span><span class="t-mark-rev t-until-cxx17">(C++17 &#21069;)</span></span></span><span class="t-rev-inl t-since-cxx17"><span>&#65288;&#36825;&#20165;&#33509;&#21551;&#29992; <a href="cpp-regex-syntax_option_type.html"><tt>std::regex_constants::multiline</tt></a><span class="t-mark">(&#20165; C++)</span> &#25165;&#24471;&#21040;&#20445;&#35777;&#65289;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span></div>
<div class="t-li1"><span class="t-li">2)</span> &#36755;&#20837;&#30340;&#36215;&#22987;&#65288;&#38500;&#38750;&#21551;&#29992; <span class="t-lc"><a href="cpp-regex-match_flag_type.html">std::regex_constants::match_not_bol</a></span><span class="t-mark">(&#20165; C++)</span> &#65289;</div>
<p>&#26029;&#35328; <code><b>$</b></code> &#65288;&#34892;&#32467;&#23614;&#65289;&#21305;&#37197;</p>
<div class="t-li1"><span class="t-li">1)</span> <i>&#34892;&#32456;&#27490;&#31526;</i>&#23383;&#31526;&#30340;&#20301;&#32622;<span class="t-rev-inl t-until-cxx17"><span>&#65288;&#36825;&#21487;&#33021;&#19981;&#21463;&#25903;&#25345;&#65289;</span> <span><span class="t-mark-rev t-until-cxx17">(C++17 &#21069;)</span></span></span><span class="t-rev-inl t-since-cxx17"><span>&#65288;&#36825;&#20165;&#33509;&#21551;&#29992; <a href="cpp-regex-syntax_option_type.html"><tt>std::regex_constants::multiline</tt></a><span class="t-mark">(&#20165; C++)</span> &#25165;&#24471;&#21040;&#20445;&#35777;&#65289;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span></div>
<div class="t-li1"><span class="t-li">2)</span> &#36755;&#20837;&#30340;&#32467;&#23614;&#65288;&#38500;&#38750;&#21551;&#29992; <span class="t-lc"><a href="cpp-regex-match_flag_type.html">std::regex_constants::match_not_bol</a></span><span class="t-mark">(&#20165; C++)</span> &#65289;</div>
<p>&#19978;&#38754;&#20108;&#20010;&#26029;&#35328;&#21644;&#19979;&#38754;&#30340;&#21407;&#23376; <code><b>.</b></code> &#20013;&#65292;<i>&#34892;&#32456;&#27490;&#31526;</i>&#26159;&#19979;&#21015;&#22235;&#20010;&#23383;&#31526;&#20043;&#19968;&#65306; <code>U+000A</code> &#65288; <code>\n</code> &#25110;&#25442;&#34892;&#65289;&#12289; <code>U+000D</code> &#65288; <code>\r</code> &#25110;&#22238;&#36710;&#65289;&#12289; <code>U+2028</code> &#65288;&#34892;&#20998;&#38548;&#31526;&#65289;&#25110; <code>U+2029</code> &#65288;&#27573;&#20998;&#38548;&#31526;&#65289;</p>
<p>&#26029;&#35328; <code><b>\b</b></code> &#65288;&#35789;&#36793;&#30028;&#65289;&#21305;&#37197;</p>
<div class="t-li1"><span class="t-li">1)</span> &#35789;&#30340;&#36215;&#22987;&#65288;&#24403;&#21069;&#23383;&#31526;&#20026;&#23383;&#27597;&#12289;&#25968;&#23383;&#25110;&#19979;&#21010;&#32447;&#65292;&#32780;&#21069;&#19968;&#23383;&#31526;&#19981;&#26159;&#65289;</div>
<div class="t-li1"><span class="t-li">2)</span> &#35789;&#30340;&#32467;&#23614;&#65288;&#24403;&#21069;&#23383;&#31526;&#19981;&#26159;&#23383;&#27597;&#12289;&#25968;&#23383;&#25110;&#19979;&#21010;&#32447;&#65292;&#32780;&#21069;&#19968;&#23383;&#31526;&#26159;&#36825;&#20123;&#20043;&#19968;&#65289;</div>
<div class="t-li1"><span class="t-li">3)</span> &#36755;&#20837;&#30340;&#36215;&#22987;&#65292;&#33509;&#39318;&#23383;&#31526;&#20026;&#23383;&#27597;&#12289;&#25968;&#23383;&#25110;&#19979;&#21010;&#32447;&#65288;&#38500;&#38750;&#21551;&#29992; <span class="t-lc"><a href="cpp-regex-match_flag_type.html">std::regex_constants::match_not_bow</a></span><span class="t-mark">(&#20165; C++)</span> &#65289;</div>
<div class="t-li1"><span class="t-li">4)</span> &#36755;&#20837;&#30340;&#32467;&#23614;&#65292;&#33509;&#26411;&#23383;&#31526;&#20026;&#23383;&#27597;&#12289;&#25968;&#23383;&#25110;&#19979;&#21010;&#32447;&#65288;&#38500;&#38750;&#21551;&#29992; <span class="t-lc"><a href="cpp-regex-match_flag_type.html">std::regex_constants::match_not_eow</a></span><span class="t-mark">(&#20165; C++)</span> &#65289;</div>
<p>&#26029;&#35328; <code><b>\B</b></code> &#65288;&#21453;&#35789;&#36793;&#30028;&#65289;&#21305;&#37197;&#25152;&#26377;&#23383;&#31526;&#65292;<b>&#38500;&#20102;</b>&#19979;&#21015;&#20869;&#23481;</p>
<div class="t-li1"><span class="t-li">1)</span> &#35789;&#30340;&#36215;&#22987;&#65288;&#24403;&#21069;&#23383;&#31526;&#20026;&#23383;&#27597;&#12289;&#25968;&#23383;&#25110;&#19979;&#21010;&#32447;&#65292;&#32780;&#21069;&#19968;&#23383;&#31526;&#19981;&#26159;&#36825;&#20123;&#20043;&#19968;&#25110;&#19981;&#23384;&#22312;&#65289;</div>
<div class="t-li1"><span class="t-li">2)</span> &#35789;&#30340;&#32467;&#23614;&#65288;&#24403;&#21069;&#23383;&#31526;&#19981;&#26159;&#23383;&#27597;&#12289;&#25968;&#23383;&#25110;&#19979;&#21010;&#32447;&#65288;&#25110;&#21305;&#37197;&#32773;&#22312;&#36755;&#20837;&#32467;&#23614;&#65289;&#65292;&#21069;&#19968;&#23383;&#31526;&#26159;&#36825;&#20123;&#20043;&#19968;&#65289;</div>
<p>&#33509;<i>&#26512;&#21462;</i>&#20250;&#21305;&#37197;&#22312;&#24403;&#21069;&#20301;&#32622;&#30340;&#36755;&#20837;&#65292;&#21017;&#26029;&#35328; <code><b>(</b></code> <code><b>?</b></code> <code><b>=</b></code> <i>&#26512;&#21462;</i> <code><b>)</b></code> &#65288;&#38646;&#23485;&#27491;&#21069;&#30651;&#65289;&#21305;&#37197;&#12290;</p>
<p>&#33509;<i>&#26512;&#21462;</i><b>&#19981;</b>&#20250;&#21305;&#37197;&#22312;&#24403;&#21069;&#20301;&#32622;&#30340;&#30340;&#36755;&#20837;&#65292;&#21017;&#26029;&#35328; <code><b>(</b></code> <code><b>?</b></code> <code><b>!</b></code> <i>&#26512;&#21462;</i> <code><b>)</b></code> &#65288;&#38646;&#23485;&#36127;&#21069;&#30651;&#65289;&#21305;&#37197;&#12290;</p>
<p>&#23545;&#20110;&#20004;&#20010;&#21069;&#30651;&#26029;&#35328;&#65292;&#22312;&#21305;&#37197;<i>&#26512;&#21462;</i>&#26102;&#65292;&#19981;&#22312;&#21305;&#37197;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#20043;&#21069;&#20196;&#20301;&#32622;&#21069;&#36827;&#12290;&#21478;&#22806;&#65292;&#33509;<i>&#26512;&#21462;</i>&#33021;&#20197;&#22810;&#31181;&#26041;&#24335;&#22312;&#24403;&#21069;&#20301;&#32622;&#21305;&#37197;&#65292;&#21017;&#21482;&#23581;&#35797;&#31532;&#19968;&#20010;&#12290;</p>
<p>ECMAScript &#31105;&#27490;&#22238;&#25764;&#21040;&#21069;&#30651;&#26512;&#21462;&#20013;&#65292;&#36825;&#24433;&#21709;&#21040;&#26469;&#33258;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#30340;&#27491;&#21069;&#30651;&#20013;&#30340;&#22238;&#28335;&#24341;&#29992;&#65288;&#35265;&#19979;&#26041;&#31034;&#20363;&#65289; &#12290;&#21040;&#26469;&#33258;&#21097;&#20313;&#27491;&#21017;&#34920;&#36798;&#24335;&#30340;&#36127;&#21069;&#30651;&#20013;&#30340;&#22238;&#28335;&#24341;&#29992;&#22987;&#32456;&#27809;&#26377;&#23450;&#20041;&#65288;&#22240;&#20026;&#21069;&#30651;&#26029;&#35328;&#24517;&#23450;&#26080;&#27861;&#32487;&#32493;&#65289;&#12290;</p>
<p>&#27880;&#24847;&#65306;&#21069;&#30651;&#26029;&#35328;&#21487;&#29992;&#20110;&#21019;&#24314;&#22810;&#20010;&#27491;&#21017;&#34920;&#36798;&#24335;&#38388;&#30340;&#36923;&#36753;&#19982;&#65288;&#35265;&#19979;&#26041;&#31034;&#20363;&#65289;&#12290;</p>
<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;regex&gt;</span>
<span class="co1">// TODO &#65306;&#36716;&#25442;&#21040;&#25509;&#21463;&#23485;&#23383;&#31526;&#24207;&#21015;</span>
<span class="co1">// std::match_results&lt;std::basic_string&lt;_ch&gt;::const_iterator&gt; m; &#19981;&#34892;&#12290;</span>
<span class="kw4">void</span> show_matches<span class="br0">(</span><span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> in, <span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> re<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> m<span class="sy4">;</span>
<a href="cpp-regex-regex_search.html"><span class="kw2013">std::<span class="me2">regex_search</span></span></a><span class="br0">(</span>in, m, <a href="cpp-regex-basic_regex.html"><span class="kw2000">std::<span class="me2">regex</span></span></a><span class="br0">(</span>re<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span><span class="br0">(</span>m.<span class="me1">empty</span><span class="br0">(</span><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;input=[&quot;</span> <span class="sy1">&lt;&lt;</span> in <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;], regex=[&quot;</span> <span class="sy1">&lt;&lt;</span> re <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]: NO MATCH<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="kw1">else</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;input=[&quot;</span> <span class="sy1">&lt;&lt;</span> in <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;], regex=[&quot;</span> <span class="sy1">&lt;&lt;</span> re <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]: &quot;</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;prefix=[&quot;</span> <span class="sy1">&lt;&lt;</span> m.<span class="me1">prefix</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] &quot;</span><span class="sy4">;</span>
<span class="kw1">for</span><span class="br0">(</span><a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> n <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> n <span class="sy1">&lt;</span> m.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="sy2">++</span>n<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; m[&quot;</span> <span class="sy1">&lt;&lt;</span> n <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]=[&quot;</span> <span class="sy1">&lt;&lt;</span> m<span class="br0">[</span>n<span class="br0">]</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] &quot;</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;suffix=[&quot;</span> <span class="sy1">&lt;&lt;</span> m.<span class="me1">suffix</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="co1">// &#22312;&#36755;&#20837;&#32467;&#23614;&#21305;&#37197; a</span>
show_matches<span class="br0">(</span><span class="st0">&quot;aaa&quot;</span>, <span class="st0">&quot;a$&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#22312;&#31532;&#19968;&#20010;&#35789;&#32467;&#23614;&#21305;&#37197; o</span>
show_matches<span class="br0">(</span><span class="st0">&quot;moo goo gai pan&quot;</span>, <span class="st0">&quot;o<span class="es1">\\</span>b&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#21069;&#30651;&#21305;&#37197;&#31435;&#21363;&#22312;&#31532;&#19968;&#20010; b &#20043;&#21518;&#30340;&#31354;&#23383;&#31526;&#20018;</span>
<span class="co1">// &#36825;&#20197; &quot;aaa&quot; &#22635;&#20805; m[1] &#65292;&#23613;&#31649; m[0] &#20026;&#31354;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;baaabac&quot;</span>, <span class="st0">&quot;(?=(a+))&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#22240;&#20026;&#31105;&#27490;&#22238;&#28335;&#24341;&#29992;&#22238;&#25764;&#21040;&#21069;&#30651;&#20013;&#65292;</span>
<span class="co1">// &#36825;&#21305;&#37197; aba &#32780;&#38750; aaaba</span>
show_matches<span class="br0">(</span><span class="st0">&quot;baaabac&quot;</span>, <span class="st0">&quot;(?=(a+))a*b<span class="es1">\\</span>1&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#32463;&#30001;&#21069;&#30651;&#30340;&#36923;&#36753;&#19982;&#65306;&#27492;&#23494;&#30721;&#21305;&#37197;&#65292;&#33509;&#23427;&#21547;&#26377;</span>
<span class="co1">// &#33267;&#23569;&#19968;&#20010;&#23567;&#20889;&#23383;&#27597;</span>
<span class="co1">// &#19982; &#33267;&#23569;&#19968;&#20010;&#22823;&#20889;&#23383;&#27597;</span>
<span class="co1">// &#19982; &#33267;&#23569;&#19968;&#20010;&#26631;&#28857;&#23383;&#31526;</span>
<span class="co1">// &#19982; &#33267;&#23569;&#26377; 6 &#20010;&#23383;&#31526;&#38271;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;abcdef&quot;</span>, <span class="st0">&quot;(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]]).{6,}&quot;</span><span class="br0">)</span><span class="sy4">;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;aB,def&quot;</span>, <span class="st0">&quot;(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]]).{6,}&quot;</span><span class="br0">)</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">input=[aaa], regex=[a$]: prefix=[aa] m[0]=[a] suffix=[]
input=[moo goo gai pan], regex=[o\b]: prefix=[mo] m[0]=[o] suffix=[ goo gai pan]
input=[baaabac], regex=[(?=(a+))]: prefix=[b] m[0]=[] m[1]=[aaa] suffix=[aaabac]
input=[baaabac], regex=[(?=(a+))a*b\1]: prefix=[baa] m[0]=[aba] m[1]=[a] suffix=[c]
input=[abcdef], regex=[(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]]).{6,}]:
NO MATCH
input=[aB,def], regex=[(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]]).{6,}]:
prefix=[] m[0]=[aB,def] suffix=[]</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E5.8E.9F.E5.AD.90">&#21407;&#23376;</span></h3>
<p><i>&#21407;&#23376;</i>&#33021;&#20026;&#19979;&#21015;&#20043;&#19968;&#65306;</p>
<p><i>Atom</i>&nbsp;::</p>
<dl>
<dd><i>PatternCharacter</i></dd>
<dd><code><b>.</b></code></dd>
<dd><code><b>\</b></code> <i>AtomEscape</i></dd>
<dd><i>CharacterClass</i></dd>
<dd><code><b>(</b></code> <i>Disjunction</i> <code><b>)</b></code></dd>
<dd><code><b>(</b></code> <code><b>?</b></code> <code><b>:</b></code> <i>Disjunction</i> <code><b>)</b></code></dd>
</dl>
<p>&#20854;&#20013; <i>AtomEscape</i>&nbsp;::</p>
<dl>
<dd><i>DecimalEscape</i></dd>
<dd><i>CharacterEscape</i></dd>
<dd><i>CharacterClassEscape</i></dd>
</dl>
<p>&#19981;&#21516;&#31181;&#31867;&#30340;&#21407;&#23376;&#27714;&#20540;&#26041;&#24335;&#19981;&#21516;&#12290;</p>
<h3><span class="mw-headline" id=".E5.AD.90.E8.A1.A8.E8.BE.BE.E5.BC.8F">&#23376;&#34920;&#36798;&#24335;</span></h3>
<p><i>&#21407;&#23376;</i> <code><b>(</b></code> <i>&#26512;&#21462;</i> <code><b>)</b></code> &#26159;&#26377;&#26631;&#35760;&#34920;&#36798;&#24335;&#65306;&#23427;&#25191;&#34892;<i>&#26512;&#21462;</i>&#24182;&#23384;&#20648;<i>&#26512;&#21462;</i>&#25152;&#28040;&#32791;&#30340;&#36755;&#20837;&#23376;&#20018;&#20110;&#23376;&#21305;&#37197;&#25968;&#32452;&#65292;&#19979;&#26631;&#23545;&#24212;&#22312;&#27492;&#28857;&#24050;&#36935;&#21040;&#30340;&#25972;&#20010;&#27491;&#21017;&#34920;&#36798;&#24335;&#20013;&#65292;&#26377;&#26631;&#35760;&#23376;&#34920;&#36798;&#24335;&#30340;&#24038;&#24320;&#25324;&#21495; <code><b>(</b></code> &#27425;&#25968;&#12290;</p>
<p>&#38500;&#20102;&#22312; <span class="t-lc"><a href="cpp-regex-match_results.html">std::match_results</a></span> &#20013;&#36820;&#22238;&#65292;&#25429;&#33719;&#30340;&#23376;&#21305;&#37197;&#36824;&#21487;&#20316;&#20026;&#22238;&#28335;&#24341;&#29992;&#65288; <code>\1</code> &#12289; <code>\2</code> &hellip;&hellip;&#65289;&#35775;&#38382;&#65292;&#24182;&#22312;&#27491;&#21017;&#34920;&#36798;&#24335;&#20013;&#24341;&#29992;&#23427;&#20204;&#12290;&#27880;&#24847; <span class="t-lc"><a href="cpp-regex-regex_replace.html">std::regex_replace</a></span> &#20197;&#21516; String.prototype.replace (ECMA-262, part 15.5.4.11) &#30340;&#26041;&#24335;&#65292;&#23545;&#20110;&#22238;&#28335;&#24341;&#29992;&#20197; <code>$</code> &#20195;&#26367; <code>\</code> &#65288; <code>$1</code> &#12289; <code>$2</code> &hellip;&hellip;&#65289;&#12290;</p>
<p><i>&#21407;&#23376;</i> <code><b>(</b></code> <code><b>?</b></code> <code><b>:</b></code> <i>&#26512;&#21462;</i> <code><b>)</b></code> &#65288;&#38750;&#26631;&#35760;&#23376;&#34920;&#36798;&#24335;&#65289;&#31616;&#21333;&#22320;&#27714;&#20540; <i>&#26512;&#21462;</i> &#24182;&#19981;&#23384;&#20648;&#20854;&#32467;&#26524;&#20110;&#23376;&#21305;&#37197;&#12290;&#36825;&#21333;&#32431;&#26159;&#35789;&#27861;&#20998;&#32452;&#12290;</p>
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
<tr>
<td class="mbox-empty-cell"></td>
<td class="mbox-text" style="">&#26412;&#33410;&#26410;&#23436;&#25104;<br />
&#21407;&#22240;&#65306;&#26242;&#26080;&#31034;&#20363;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.9B.9E.E6.BA.AF.E5.BC.95.E7.94.A8">&#22238;&#28335;&#24341;&#29992;</span></h3>
<p><i>DecimalEscape</i>&nbsp;::</p>
<dl>
<dd><i>DecimalIntegerLiteral</i> [<i>lookahead</i> &notin; <i>DecimalDigit</i>]</dd>
</dl>
<p>&#33509; <code><b>\</b></code> &#21518;&#38543;&#39318;&#20301;&#38750; <code>0</code> &#30340;&#21313;&#36827;&#21046;&#25968; <code>N</code> &#65292;&#21017;&#35748;&#20026;&#35813;&#36716;&#20041;&#24207;&#21015;&#20026;<i>&#22238;&#28335;&#24341;&#29992; (backreference)</i> &#12290;&#36890;&#36807;&#22312;&#27599;&#20010;&#25968;&#20301;&#19978;&#35843;&#29992; <span class="t-lc"><a href="cpp-regex-regex_traits-value.html">std::regex_traits::value</a></span><span class="t-mark">(&#20165; C++)</span> &#24182;&#29992;&#24213; 10 &#31639;&#26415;&#32452;&#21512;&#21450;&#20854;&#32467;&#26524;&#33719;&#24471; <code>N</code> &#12290;&#33509; <code>N</code> &#22823;&#20110;&#25972;&#20010;&#27491;&#21017;&#34920;&#36798;&#24335;&#20013;&#25429;&#33719;&#25324;&#21495;&#30340;&#24635;&#25968;&#65292;&#21017;&#20026;&#38169;&#35823;&#12290;</p>
<p>&#22238;&#28335;&#24341;&#29992; <code>\N</code> &#20316;&#20026;&#21407;&#23376;&#20986;&#29616;&#26102;&#65292;&#23427;&#21305;&#37197;&#24403;&#21069;&#23384;&#20648;&#20110;&#23376;&#21305;&#37197;&#25968;&#32452;&#20013;&#31532; N &#20010;&#20803;&#32032;&#30340;&#23376;&#20018;&#12290;</p>
<p>&#21313;&#36827;&#21046;&#36716;&#20041; <code>\0</code> <b>&#19981;</b>&#26159;&#22238;&#28335;&#24341;&#29992;&#65306;&#23427;&#26159;&#34920;&#31034;&#31354;&#23383;&#31526;&#30340;&#23383;&#31526;&#36716;&#20041;&#12290;&#23427;&#19981;&#33021;&#20026;&#21313;&#36827;&#21046;&#25968;&#25152;&#21518;&#38543;&#12290;</p>
<p>&#22914;&#19978;&#65292;&#27880;&#24847; <span class="t-lc"><a href="cpp-regex-regex_replace.html">std::regex_replace</a></span> &#23545;&#20110;&#22238;&#28335;&#24341;&#29992;&#20197; <code>$</code> &#20195;&#26367; <code>\</code> &#65288; <code>$1</code> &#12289; <code>$2</code> &hellip;&hellip;&#65289;&#12290;</p>
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
<tr>
<td class="mbox-empty-cell"></td>
<td class="mbox-text" style="">&#26412;&#33410;&#26410;&#23436;&#25104;<br />
&#21407;&#22240;&#65306;&#26242;&#26080;&#31034;&#20363;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.8D.95.E5.AD.97.E7.AC.A6.E5.8C.B9.E9.85.8D">&#21333;&#23383;&#31526;&#21305;&#37197;</span></h3>
<p><i>&#21407;&#23376;</i> <code><b>.</b></code> &#21305;&#37197;&#24182;&#28040;&#32791;&#26469;&#33258;&#36755;&#20837;&#24207;&#21015;&#30340;&#20219;&#19968;&#23383;&#31526;&#65292;&#38500;&#20102;<i>&#34892;&#32456;&#27490;&#31526;</i>&#65288; <code>U+000A</code> &#12289; <code>U+000D</code> &#12289; <code>U+2028</code> &#25110; <code>U+2029</code> &#65289;</p>
<p><i>&#21407;&#23376;</i> <i>&#27169;&#24335;&#23383;&#31526;</i> &#65292;&#20854;&#20013;<i>&#27169;&#24335;&#23383;&#31526; (PatternCharacter)</i> &#20026;&#20219;&#20309;<i>&#28304;&#23383;&#31526; (SourceCharacter)</i> &#65292;<b>&#38500;&#20102;</b>&#23383;&#31526; <code><b>^ $ \ . * +&nbsp;? ( ) [ ] { } |</b></code> &#65292;&#21305;&#37197;&#24182;&#28040;&#32791;&#19968;&#20010;&#26469;&#33258;&#36755;&#20837;&#30340;&#23383;&#31526;&#65292;&#33509;&#23427;&#31561;&#20110;&#27492;<i>&#27169;&#24335;&#23383;&#31526;</i>&#12290;</p>
<p>&#36825;&#20010;&#21450;&#25152;&#26377;&#20854;&#20182;&#21333;&#23383;&#31526;&#21305;&#37197;&#23450;&#20041;&#22914;&#19979;&#65306;</p>
<div class="t-li1"><span class="t-li">1)</span> &#33509;&#35774;&#32622;&#20102; <span class="t-lc"><a href="cpp-regex-syntax_option_type.html">std::regex_constants::icase</a></span> &#65292;&#21017;&#33509; <span class="t-lc"><a href="cpp-regex-regex_traits-translate_nocase.html">std::regex_traits::translate_nocase</a></span> &#30340;&#36820;&#22238;&#20540;&#30456;&#31561;&#21017;&#23383;&#31526;&#30456;&#31561;&#12290;<span class="t-mark">(&#20165; C++)</span></div>
<div class="t-li1"><span class="t-li">2)</span> &#21542;&#21017;&#65292;&#33509;&#35774;&#32622;&#20102; <span class="t-lc"><a href="cpp-regex-syntax_option_type.html">std::regex_constants::collate</a></span> &#65292;&#21017;&#33509; <span class="t-lc"><a href="cpp-regex-regex_traits-translate.html">std::regex_traits::translate</a></span> &#30340;&#36820;&#22238;&#20540;&#30456;&#31561;&#21017;&#23383;&#31526;&#30456;&#31561;&#12290;<span class="t-mark">(&#20165; C++)</span></div>
<div class="t-li1"><span class="t-li">3)</span> &#21542;&#21017;&#65292;&#33509; operator== &#36820;&#22238; true &#21017;&#23383;&#31526;&#30456;&#31561;&#12290;</div>
<p>&#27599;&#20010;&#30001;&#36716;&#20041;&#23383;&#31526; <code><b>\</b></code> &#21518;&#38543;<i>&#23383;&#31526;&#36716;&#20041; (CharacterEscape)</i> &#30340;<i>&#21407;&#23376;</i>&#65292;&#36824;&#26377;&#29305;&#27530;&#21313;&#36827;&#21046;&#36716;&#20041; <code><b>\0</b></code> &#65292;&#21305;&#37197;&#28040;&#32791;&#19968;&#20010;&#26469;&#33258;&#36755;&#20837;&#30340;&#23383;&#31526;&#65292;&#33509;&#23427;&#31561;&#20110;<i>&#23383;&#31526;&#36716;&#20041;</i>&#25152;&#34920;&#31034;&#30340;&#23383;&#31526;&#12290;&#36776;&#35782;&#19979;&#21015;&#23383;&#31526;&#36716;&#20041;&#24207;&#21015;&#65306;</p>
<p><i>CharacterEscape</i>&nbsp;::</p>
<dl>
<dd><i>ControlEscape</i></dd>
<dd><code><b>c</b></code> <i>ControlLetter</i></dd>
<dd><i>HexEscapeSequence</i></dd>
<dd><i>UnicodeEscapeSequence</i></dd>
<dd><i>IdentityEscape</i></dd>
</dl>
<p>&#27492;&#22788;<i>&#25511;&#21046;&#36716;&#20041; (ControlEscape)</i> &#20026;&#19979;&#21015;&#20116;&#20010;&#23383;&#31526;&#20043;&#19968;&#65306; <code><b>f n r t v</b></code></p>
<table class="wikitable">
<tr>
<th>&#25511;&#21046;&#36716;&#20041;</th>
<th>&#32534;&#30721;&#21333;&#20803;</th>
<th>&#21517;&#31216;</th>
</tr>
<tr>
<td><code><b>f</b></code></td>
<td>U+000C</td>
<td>&#25442;&#39029;</td>
</tr>
<tr>
<td><code><b>n</b></code></td>
<td>U+000A</td>
<td>&#25442;&#34892;</td>
</tr>
<tr>
<td><code><b>r</b></code></td>
<td>U+000D</td>
<td>&#22238;&#36710;</td>
</tr>
<tr>
<td><code><b>t</b></code></td>
<td>U+0009</td>
<td>&#27700;&#24179;&#21046;&#34920;</td>
</tr>
<tr>
<td><code><b>v</b></code></td>
<td>U+000B</td>
<td>&#22402;&#30452;&#21046;&#34920;</td>
</tr>
</table>
<p><i>&#25511;&#21046;&#23383;&#27597; (ControlLetter)</i> &#20026;&#20219;&#20309;&#23567;&#20889;&#25110;&#22823;&#20889; ASCII &#23383;&#31526;&#65292;&#32780;&#27492;&#23383;&#31526;&#36716;&#20041;&#25152;&#21305;&#37197;&#23383;&#31526;&#30340;&#32534;&#30721;&#21333;&#20803;&#31561;&#20110;<i>&#25511;&#21046;&#23383;&#27597;</i>&#30340;&#32534;&#30721;&#21333;&#20803;&#30340;&#20540;&#38500;&#20197; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">32</span></span></span> &#65292;&#20363;&#22914; <code><b>\cD</b></code> &#21644; <code><b>\cd</b></code> &#37117;&#21305;&#37197;&#32534;&#30721;&#21333;&#20803; <code>U+0004</code> (EOT) &#65292;&#22240;&#20026; &#39;D&#39; &#26159; <code>U+0044</code> &#32780; <code>0x44&nbsp;% 32 == 4</code> &#24182;&#19988; &#39;d&#39; &#26159; <code>U+0064</code> &#32780; <code>0x64&nbsp;% 32 == 4</code> &#12290;</p>
<p><i>&#21313;&#20845;&#36827;&#21046;&#36716;&#20041;&#24207;&#21015; (HexEscapeSequence)</i> &#26159;&#23383;&#27597; <code><b>x</b></code> &#21518;&#38543;&#20934;&#30830;&#20108;&#20010;<i>&#21313;&#20845;&#36827;&#21046;&#20301; (HexDigit)</i> &#65288;&#20854;&#20013;<i>&#21313;&#20845;&#36827;&#21046;&#20301;</i>&#26159; <code><b>0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F</b></code> &#20043;&#19968;&#65289;&#12290;&#27492;&#23383;&#31526;&#36716;&#20041;&#25152;&#21305;&#37197;&#23383;&#31526;&#30340;&#32534;&#30721;&#21333;&#20803;&#31561;&#20110;&#20108;&#20301;&#21313;&#20845;&#36827;&#21046;&#25968;&#30340;&#25968;&#20540;&#12290;</p>
<p><i>Unicode&#36716;&#20041;&#24207;&#21015; (UnicodeEscapeSequence)</i> &#26159;&#23383;&#27597; <code><b>u</b></code> &#21518;&#38543;&#20934;&#30830;&#22235;&#20010;<i>&#21313;&#20845;&#36827;&#21046;&#20301;</i>&#12290;&#27492;&#23383;&#31526;&#36716;&#20041;&#25152;&#21305;&#37197;&#23383;&#31526;&#30340;&#32534;&#30721;&#21333;&#20803;&#31561;&#20110;&#27492;&#22235;&#20301;&#21313;&#20845;&#36827;&#21046;&#25968;&#30340;&#25968;&#20540;&#12290;&#33509;&#35813;&#20540;&#19981;&#36866;&#20110;&#27492; <span class="t-lc"><a href="cpp-regex-basic_regex.html">std::basic_regex</a></span> &#30340; CharT &#65292;&#21017;&#25243;&#20986; <span class="t-lc"><a href="cpp-regex-regex_error.html">std::regex_error</a></span> <span class="t-mark">(&#20165; C++)</span>&#12290;</p>
<p><i>&#33258;&#36523;&#36716;&#20041; (IdentityEscape)</i> &#33021;&#20026;&#20219;&#20309;&#38750;&#23383;&#27597;&#25968;&#23383;&#30340;&#23383;&#31526;&#65306;&#20363;&#22914;&#21478;&#19968;&#21453;&#26012;&#26464;&#12290;&#23427;&#29031;&#21407;&#26679;&#21305;&#37197;&#23383;&#31526;&#12290;</p>
<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;regex&gt;</span>
<span class="co1">// TODO &#65306;&#36716;&#25442;&#21040;&#25509;&#21463;&#23485;&#23383;&#31526;&#24207;&#21015;</span>
<span class="co1">// std::match_results&lt;std::basic_string&lt;_ch&gt;::const_iterator&gt; m; &#19981;&#34892;&#12290;</span>
<span class="kw4">void</span> show_matches<span class="br0">(</span><span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> in, <span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> re<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> m<span class="sy4">;</span>
<a href="cpp-regex-regex_search.html"><span class="kw2013">std::<span class="me2">regex_search</span></span></a><span class="br0">(</span>in, m, <a href="cpp-regex-basic_regex.html"><span class="kw2000">std::<span class="me2">regex</span></span></a><span class="br0">(</span>re<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span><span class="br0">(</span>m.<span class="me1">empty</span><span class="br0">(</span><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;input=[&quot;</span> <span class="sy1">&lt;&lt;</span> in <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;], regex=[&quot;</span> <span class="sy1">&lt;&lt;</span> re <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]: NO MATCH<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="kw1">else</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;input=[&quot;</span> <span class="sy1">&lt;&lt;</span> in <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;], regex=[&quot;</span> <span class="sy1">&lt;&lt;</span> re <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]: &quot;</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;prefix=[&quot;</span> <span class="sy1">&lt;&lt;</span> m.<span class="me1">prefix</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] &quot;</span><span class="sy4">;</span>
<span class="kw1">for</span><span class="br0">(</span><a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> n <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> n <span class="sy1">&lt;</span> m.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="sy2">++</span>n<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; m[&quot;</span> <span class="sy1">&lt;&lt;</span> n <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]=[&quot;</span> <span class="sy1">&lt;&lt;</span> m<span class="br0">[</span>n<span class="br0">]</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] &quot;</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;suffix=[&quot;</span> <span class="sy1">&lt;&lt;</span> m.<span class="me1">suffix</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;]<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="co1">// &#22823;&#22810;&#25968;&#36716;&#20041;&#31867;&#20284; C++ &#65292;&#20026;&#20803;&#23383;&#31526;&#20445;&#23384;&#12290;&#20320;&#23558;&#38656;&#35201;&#22312;&#26012;&#26464;&#24773;&#24418;&#20351;&#29992;&#21452;&#37325;&#36716;&#20041;&#25110;&#26410;&#22788;&#29702;&#23383;&#31526;&#20018;&#12290;</span>
show_matches<span class="br0">(</span><span class="st0">&quot;C++<span class="es1">\\</span>&quot;</span>, R<span class="st0">&quot;(C\+\+<span class="es1">\\</span>)&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#36716;&#20041;&#24207;&#21015;&#19982; NUL &#12290;</span>
<a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> s<span class="br0">(</span><span class="st0">&quot;ab<span class="es2">\xff</span><span class="es5">\0</span>cd&quot;</span>, <span class="nu0">5</span><span class="br0">)</span><span class="sy4">;</span>
show_matches<span class="br0">(</span>s, <span class="st0">&quot;(<span class="es1">\\</span>0|<span class="es1">\\</span>u00ff)&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#27809;&#26377;&#23450;&#20041;&#38750; BMP Unicode &#30340;&#21305;&#37197;&#65292;&#22240;&#20026; ECMAScript &#20351;&#29992; UTF-16 &#21407;&#23376;&#12290;</span>
<span class="co1">// &#27492; emoji &#39321;&#34121;&#26159;&#21542;&#21305;&#37197;&#33021;&#20026;&#24179;&#21488;&#20381;&#36182;&#65306;</span>
<span class="co1">// XXX &#65306;&#36825;&#20123;&#38656;&#35201;&#20026;&#23485;&#23383;&#31526;&#20018;&#65281;</span>
<span class="co1">// show_matches(L&quot;\U0001f34c&quot;, L&quot;[\\u0000-\\ufffe]+&quot;);</span>
<span class="br0">}</span></pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E5.AD.97.E7.AC.A6.E7.B1.BB">&#23383;&#31526;&#31867;</span></h3>
<p>&#21407;&#23376;&#33021;&#34920;&#31034;&#23383;&#31526;&#31867;&#65292;&#21363;&#23427;&#20250;&#21305;&#37197;&#24182;&#28040;&#32791;&#19968;&#20010;&#23383;&#31526;&#65292;&#33509;&#35813;&#23383;&#31526;&#23646;&#20110;&#39044;&#23450;&#20041;&#30340;&#23383;&#31526;&#32452;&#20043;&#19968;&#12290;</p>
<p>&#23383;&#31526;&#31867;&#33021;&#36890;&#36807;&#23383;&#31526;&#31867;&#36716;&#20041;&#24341;&#20837;&#65306;</p>
<p><i>Atom</i>&nbsp;::</p>
<dl>
<dd><code><b>\</b></code> <i>CharacterClassEscape</i></dd>
</dl>
<p>&#25110;&#30452;&#25509;&#20026;</p>
<p><i>Atom</i>&nbsp;::</p>
<dl>
<dd><i>CharacterClass</i></dd>
</dl>
<p>&#23383;&#31526;&#31867;&#36716;&#20041;&#26159;&#19968;&#20123;&#24120;&#29992;&#23383;&#31526;&#31867;&#30340;&#31616;&#27905;&#20889;&#27861;&#65292;&#22914;&#19979;&#65306;</p>
<table class="wikitable">
<tr>
<th>&#23383;&#31526;&#31867;&#36716;&#20041;</th>
<th>&#31867;&#21517;&#34920;&#36798;&#24335;<span class="t-mark">(&#20165; C++)</span></th>
<th>&#21547;&#20041;</th>
</tr>
<tr>
<td><code><b>d</b></code></td>
<td><code><b>[[:digit:]]</b></code></td>
<td>&#25968;&#23383;</td>
</tr>
<tr>
<td><code><b>D</b></code></td>
<td><code><b>[^[:digit:]]</b></code></td>
<td>&#38750;&#25968;&#23383;</td>
</tr>
<tr>
<td><code><b>s</b></code></td>
<td><code><b>[[:space:]]</b></code></td>
<td>&#31354;&#30333;&#23383;&#31526;</td>
</tr>
<tr>
<td><code><b>S</b></code></td>
<td><code><b>[^[:space:]]</b></code></td>
<td>&#38750;&#31354;&#30333;&#23383;&#31526;</td>
</tr>
<tr>
<td><code><b>w</b></code></td>
<td><code><b>[_[:alnum:]]</b></code></td>
<td>&#23383;&#27597;&#25968;&#23383;&#23383;&#31526;&#21450;&#23383;&#31526; <code><b>_</b></code></td>
</tr>
<tr>
<td><code><b>W</b></code></td>
<td><code><b>[^_[:alnum:]]</b></code></td>
<td>&#24322;&#20110;&#23383;&#27597;&#25968;&#23383;&#25110; <code><b>_</b></code> &#30340;&#23383;&#31526;</td>
</tr>
</table>
<span style="font-size:0.7em; line-height:130%">C++ &#20013;&#36825;&#20123;&#23383;&#31526;&#31867;&#36716;&#20041;&#30340;&#20934;&#30830;&#21547;&#20041;&#20197;&#20381;&#36182; locale &#30340;&#20855;&#21517;&#23383;&#31526;&#31867;&#23450;&#20041;&#65292;&#32780;&#38750;&#36890;&#36807;&#26174;&#24335;&#21015;&#20030;&#21516; ECMAScript &#20013;&#30340;&#21487;&#25509;&#21463;&#23383;&#31526;&#12290;</span>
<p><i>&#23383;&#31526;&#31867; (CharacterClass)</i> &#26159;&#26041;&#25324;&#21495;&#29615;&#32469;&#30340;<i>&#31867;&#33539;&#22260; (ClassRanges)</i> &#24207;&#21015;&#65292;&#21487;&#36873;&#22320;&#20197;&#21462;&#21453;&#36816;&#31639;&#31526; <code><b>^</b></code> &#24320;&#22987;&#12290;&#33509;&#23427;&#22987;&#20110; <code><b>^</b></code> &#65292;&#21017;&#27492;<i>&#21407;&#23376;</i>&#21305;&#37197;&#20219;&#20309;<b>&#19981;&#22312;</b>&#25152;&#26377;<i>&#31867;&#33539;&#22260;</i>&#30340;&#24182;&#25152;&#34920;&#31034;&#30340;&#23383;&#31526;&#38598;&#21512;&#20013;&#30340;&#23383;&#31526;&#12290;&#21542;&#21017;&#65292;&#27492;<i>&#21407;&#23376;</i>&#21305;&#37197;&#20219;&#20309;<b>&#22312;</b>&#25152;&#26377;<i>&#31867;&#33539;&#22260;</i>&#30340;&#24182;&#25152;&#34920;&#31034;&#30340;&#23383;&#31526;&#38598;&#21512;&#20013;&#30340;&#23383;&#31526;&#12290;</p>
<p><i>CharacterClass</i>&nbsp;::</p>
<dl>
<dd><code><b>[</b></code> <code><b>[</b></code> <i>lookahead &notin; {</i><code><b>^</b></code><i>}]</i> <i>ClassRanges</i> <code><b>]</b></code></dd>
<dd><code><b>[</b></code> <code><b>^</b></code> <i>ClassRanges</i> <code><b>]</b></code></dd>
</dl>
<p>ClassRanges&nbsp;::</p>
<dl>
<dd>[empty]</dd>
<dd><i>NonemptyClassRanges</i></dd>
</dl>
<p><i>NonemptyClassRanges</i>&nbsp;::</p>
<dl>
<dd><i>ClassAtom</i></dd>
<dd><i>ClassAtom</i> <i>NonemptyClassRangesNoDash</i></dd>
<dd><i>ClassAtom</i> - <i>ClassAtom</i> <i>ClassRanges</i></dd>
</dl>
<p>&#33509;&#38750;&#31354;&#31867;&#33539;&#22260;&#25317;&#26377;&#24418;&#24335; <code><b><i>ClassAtom</i> - <i>ClassAtom</i></b></code> &#65292;&#21017;&#23427;&#21305;&#37197;&#26469;&#33258;&#23450;&#20041;&#22914;&#19979;&#30340;&#33539;&#22260;&#30340;&#20219;&#20309;&#23383;&#31526;&#65306;<span class="t-mark">(&#20165; C++)</span></p>
<p>&#39318;&#20010;<i>&#31867;&#21407;&#23376; (ClassAtom)</i> &#24517;&#39035;&#21305;&#37197;&#21333;&#20010;&#23545;&#29031;&#20803;&#32032; <code>c1</code> &#65292;&#32780;&#31532;&#20108;&#20010;<i>&#31867;&#21407;&#23376;</i>&#24517;&#39035;&#21305;&#37197;&#21333;&#20010;&#23545;&#29031;&#20803;&#32032; <code>c2</code> &#12290;&#37319;&#29992;&#19979;&#21015;&#27493;&#39588;&#65292;&#27979;&#35797;&#27492;&#33539;&#22260;&#26159;&#21542;&#21305;&#37197;&#36755;&#20837;&#23383;&#31526; <code>c</code> &#65306;</p>
<div class="t-li1"><span class="t-li">1)</span> &#33509; <span class="t-lc"><a href="cpp-regex-syntax_option_type.html">std::regex_constants::collate</a></span> &#19981;&#25171;&#24320;&#65292;&#21017;&#36890;&#36807;&#30452;&#25509;&#27604;&#36739;&#32534;&#30721;&#28857;&#21305;&#37197;&#23383;&#31526;&#65306;&#33509; <code>c1 &lt;= c &amp;&amp; c &lt;= c2</code> &#21017;&#21305;&#37197; <code>c</code></div>
<div class="t-li1"><span class="t-li">1)</span> &#21542;&#21017;&#65288;&#33509;&#21551;&#29992; <span class="t-lc"><a href="cpp-regex-syntax_option_type.html">std::regex_constants::collate</a></span> &#65289;&#65306;</div>
<div class="t-li2"><span class="t-li">1)</span> &#33509;&#21551;&#29992; <span class="t-lc"><a href="cpp-regex-syntax_option_type.html">std::regex_constants::icase</a></span> &#65292;&#21017;&#20256;&#36882;&#25152;&#26377;&#19977;&#20010;&#23383;&#31526;&#65288; <code>c</code> &#12289; <code>c1</code> &#21450; <code>c2</code> &#65289;&#32473; <span class="t-lc"><a href="cpp-regex-regex_traits-translate_nocase.html">std::regex_traits::translate_nocase</a></span></div>
<div class="t-li2"><span class="t-li">2)</span> &#21542;&#21017;&#65288;&#33509;&#26410;&#35774;&#32622; <span class="t-lc"><a href="cpp-regex-syntax_option_type.html">std::regex_constants::icase</a></span> &#65289;&#65292;&#21017;&#20256;&#36882;&#25152;&#26377;&#19977;&#20010;&#23383;&#31526;&#65288; <code>c</code> &#12289; <code>c1</code> &#21450; <code>c2</code> &#65289;&#32473; <span class="t-lc"><a href="cpp-regex-regex_traits-translate.html">std::regex_traits::translate</a></span></div>
<div class="t-li1"><span class="t-li">2)</span> &#29992; <span class="t-lc"><a href="cpp-regex-regex_traits-transform.html">std::regex_traits::transform</a></span> &#27604;&#36739;&#32467;&#26524;&#23383;&#31526;&#20018;&#65292;&#32780;&#33509; <code>transformed c1 &lt;= transformed c &amp;&amp; transformed c &lt;= transformed c2</code> &#21017;&#21305;&#37197; <code>c</code></div>
<p>&#25353;&#23383;&#38754;&#23545;&#24453;&#23383;&#31526; <code><b>-</b></code> &#65292;&#33509;&#23427;&#26159;&#19979;&#21015;&#20043;&#19968;</p>
<ul>
<li><i>&#31867;&#33539;&#22260;</i>&#30340;&#39318;&#25110;&#26411;&#23383;&#31526;</li>
<li>&#26464;&#20998;&#38548;&#33539;&#22260;&#35268;&#23450;&#30340;&#24320;&#22987;&#25110;&#32467;&#23614;&#31867;&#21407;&#23376;</li>
<li>&#31435;&#21363;&#22312;&#26464;&#20998;&#38548;&#33539;&#22260;&#35268;&#23450;&#20043;&#21518;&#12290;</li>
<li>&#20197;&#21453;&#26012;&#26464;&#36716;&#20041;&#20026;<i>&#23383;&#31526;&#36716;&#20041;</i></li>
</ul>
<p>NonemptyClassRangesNoDash&nbsp;::</p>
<dl>
<dd><i>ClassAtom</i></dd>
<dd><i>ClassAtomNoDash</i> <i>NonemptyClassRangesNoDash</i></dd>
<dd><i>ClassAtomNoDash</i> - <i>ClassAtom</i> <i>ClassRanges</i></dd>
</dl>
<p><i>ClassAtom</i>&nbsp;::</p>
<dl>
<dd><code><b>-</b></code></dd>
<dd><i>ClassAtomNoDash</i></dd>
<dd><i>ClassAtomExClass</i><span class="t-mark">(&#20165; C++)</span></dd>
<dd><i>ClassAtomCollatingElement</i><span class="t-mark">(&#20165; C++)</span></dd>
<dd><i>ClassAtomEquivalence</i><span class="t-mark">(&#20165; C++)</span></dd>
</dl>
<p>ClassAtomNoDash&nbsp;::</p>
<dl>
<dd><i>SourceCharacter</i> but not one of <code><b>\ or ] or -</b></code></dd>
<dd><code><b>\</b></code> <i>ClassEscape</i></dd>
</dl>
<p>&#27599;&#20010;<i>&#26080;&#26464;&#31867;&#21407;&#23376; (ClassAtomNoDash)</i> &#34920;&#31034;&#21333;&#20010;&#23383;&#31526;&mdash;&mdash;&#21407;&#29366;&#30340;<i>&#28304;&#23383;&#31526;</i>&#25110;&#36716;&#20041;&#22914;&#19979;&#30340;&#23383;&#31526;&#65306;</p>
<p>ClassEscape&nbsp;::</p>
<dl>
<dd><i>DecimalEscape</i></dd>
<dd><code><b>b</b></code></dd>
<dd><i>CharacterEscape</i></dd>
<dd><i>CharacterClassEscape</i></dd>
</dl>
<p>&#29305;&#27530;&#30340;<i>&#31867;&#36716;&#20041; (ClassEscape)</i> <code><b>\b</b></code> &#20135;&#29983;&#21305;&#37197;&#32534;&#30721;&#21333;&#20803; U+0008 &#65288;&#36864;&#26684;&#65289;&#30340;&#23383;&#31526;&#38598;&#12290;&#22312;<i>&#23383;&#31526;&#31867;</i>&#22806;&#65292;&#23427;&#26159;&#35789;&#36793;&#30028;<i>&#26029;&#35328;</i>&#12290;</p>
<p><i>&#23383;&#31526;&#31867;</i>&#20869;&#65292; <code><b>\B</b></code> &#30340;&#20351;&#29992;&#21644;&#20219;&#20309;&#22238;&#28335;&#24341;&#29992;&#65288;&#24322;&#20110;&#38646;&#30340;<i>&#21313;&#36827;&#21046;&#36716;&#20041;</i>&#65289;&#37117;&#26159;&#38169;&#35823;&#12290;</p>
<p>&#20026;&#23558;&#23383;&#31526; <code><b>-</b></code> &#21644; <code><b>]</b></code> &#24403;&#20570;&#21407;&#23376;&#65292;&#19968;&#20123;&#24773;&#24418;&#20013;&#38656;&#35201;&#36716;&#20041;&#23427;&#20204;&#12290;&#20854;&#20182;&#25317;&#26377;&#22312;<i>&#23383;&#31526;&#31867;</i>&#22806;&#30340;&#29305;&#27530;&#21547;&#20041;&#30340;&#23383;&#31526;&#65292;&#20363;&#22914; <code><b>*</b></code> &#25110; <code><b>?</b></code> &#65292;&#19981;&#38656;&#35201;&#36716;&#20041;&#12290;</p>
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
<tr>
<td class="mbox-empty-cell"></td>
<td class="mbox-text" style="">&#26412;&#33410;&#26410;&#23436;&#25104;<br />
&#21407;&#22240;&#65306;&#26242;&#26080;&#31034;&#20363;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.9F.BA.E4.BA.8E_POSIX_.E7.9A.84.E5.AD.97.E7.AC.A6.E7.B1.BB">&#22522;&#20110; POSIX &#30340;&#23383;&#31526;&#31867;</span></h3>
<p>&#36825;&#20123;&#23383;&#31526;&#31867;&#26159;&#23545; ECMAScript &#25991;&#27861;&#30340;&#25193;&#23637;&#65292;&#24182;&#31561;&#20215;&#20110; POSIX &#27491;&#21017;&#34920;&#36798;&#24335;&#20013;&#25214;&#21040;&#30340;&#23383;&#31526;&#31867;&#12290;</p>
<p>ClassAtomExClass<span class="t-mark">(&#20165; C++)</span>&nbsp;::</p>
<dl>
<dd><code><b>[:</b></code> <i>ClassName</i> <code><b>:]</b></code></dd>
</dl>
<p>&#34920;&#31034;&#25152;&#26377;&#20855;&#21517;&#23383;&#31526;&#31867;<i>&#31867;&#21517; (ClassName)</i> &#20013;&#30340;&#25104;&#21592;&#12290;&#20165;&#33509; <span class="t-lc"><a href="cpp-regex-regex_traits-lookup_classname.html">std::regex_traits::lookup_classname</a></span> &#23545;&#27492;&#21517;&#31216;&#36820;&#22238;&#38750;&#38646;&#23383;&#31526;&#20018;&#65292;&#21517;&#31216;&#25165;&#21512;&#27861;&#12290;&#22914; <span class="t-lc"><a href="cpp-regex-regex_traits-lookup_classname.html">std::regex_traits::lookup_classname</a></span> &#20013;&#25551;&#36848;&#65292;&#20445;&#35777;&#36776;&#35782;&#19979;&#21015;&#21517;&#31216;&#65306; <code><b>alnum, alpha, blank, cntrl, digit, graph, lower, print, punct, space, upper, xdigit, d, s, w</b></code> &#12290;&#39069;&#22806;&#30340;&#21517;&#31216;&#65288;&#22914;&#26085;&#25991;&#20013;&#30340; <code><b>jdigit</b></code> &#25110; <code><b>jkanji</b></code> &#65289;&#21487;&#20026;&#31995;&#32479;&#25552;&#20379;&#30340; locale &#25552;&#20379;&#65292;&#25110;&#23454;&#29616;&#20026;&#29992;&#25143;&#23450;&#20041;&#30340;&#25193;&#23637;&#65306;</p>
<p>ClassAtomCollatingElement<span class="t-mark">(&#20165; C++)</span>&nbsp;::</p>
<dl>
<dd><code><b>[.</b></code> <i>ClassName</i> <code><b>.]</b></code></dd>
</dl>
<p>&#34920;&#31034;&#20855;&#21517;&#23545;&#29031;&#20803;&#32032;&#65292;&#23427;&#21487;&#34920;&#31034;&#21333;&#20010;&#23383;&#31526;&#65292;&#25110;&#22312;&#24863;&#26579;&#30340; locale &#19979;&#20316;&#20026;&#21333;&#20010;&#21333;&#20301;&#23545;&#29031;&#30340;&#23383;&#31526;&#24207;&#21015;&#65292;&#20363;&#22914; <code>[.tilde.]</code> &#25110;&#25463;&#20811;&#25991;&#20013;&#30340; <code>[.ch.]</code> &#12290;&#20165;&#33509; <span class="t-lc"><a href="cpp-regex-regex_traits-lookup_collatename.html">std::regex_traits::lookup_collatename</a></span> &#19981;&#26159;&#31354;&#23383;&#31526;&#20018;&#21517;&#31216;&#25165;&#21512;&#27861;&#12290;</p>
<p>&#20351;&#29992; <span class="t-lc"><a href="cpp-regex-syntax_option_type.html">std::regex_constants::collate</a></span> &#26102;&#65292;&#22987;&#32456;&#33021;&#20197;&#23545;&#29031;&#20803;&#32032;&#20026;&#33539;&#22260;&#30340;&#31471;&#28857;&#65288;&#20363;&#22914;&#21256;&#29273;&#21033;&#25991;&#20013;&#30340; <code>[[.dz.]-g]</code> &#65289;&#12290;</p>
<p>ClassAtomEquivalence<span class="t-mark">(&#20165; C++)</span>&nbsp;::</p>
<dl>
<dd><code><b>[=</b></code> <i>ClassName</i> <code><b>=]</b></code></dd>
</dl>
<p>&#34920;&#31034;&#19982;&#20855;&#21517;&#23545;&#29031;&#20803;&#32032;&#30456;&#21516;&#30340;&#31561;&#20215;&#31867;&#30340;&#25152;&#26377;&#25104;&#21592;&#23383;&#31526;&#65292;&#21363;&#20854;&#21021;&#31561;&#23545;&#29031;&#20851;&#38190;&#19982;&#23545;&#29031;&#20803;&#32032;<i>&#31867;&#21517;</i>&#25152;&#25317;&#26377;&#32773;&#30456;&#21516;&#30340;&#23383;&#31526;&#12290;&#20165;&#33509; <span class="t-lc"><a href="cpp-regex-regex_traits-lookup_collatename.html">std::regex_traits::lookup_collatename</a></span> &#23545;&#35813;&#21517;&#31216;&#36820;&#22238;&#38750;&#31354;&#23383;&#31526;&#20018;&#65292;&#19988; <span class="t-lc"><a href="cpp-regex-regex_traits-transform_primary.html">std::regex_traits::transform_primary</a></span> &#23545;&#35843;&#29992; <span class="t-lc"><a href="cpp-regex-regex_traits-lookup_collatename.html">std::regex_traits::lookup_collatename</a></span> &#30340;&#32467;&#26524;&#30340;&#36820;&#22238;&#20540;&#19981;&#26159;&#31354;&#23383;&#31526;&#20018;&#65292;&#21517;&#31216;&#25165;&#21512;&#27861;&#12290;</p>
<p>&#21021;&#31561;&#25490;&#24207;&#20851;&#38190;&#26159;&#24573;&#30053;&#22823;&#23567;&#20889;&#12289;&#26631;&#38899;&#31526;&#25110;&#26412;&#22320;&#29615;&#22659;&#38480;&#23450;&#35009;&#21098;&#30340;&#20851;&#38190;&#65307;&#25925;&#20363;&#22914; <code>[[=a=]]</code> &#21305;&#37197;&#20219;&#20309;&#36825;&#20123;&#23383;&#31526;&#20043;&#19968;&#65306; <code>a, &Agrave;, &Aacute;, &Acirc;, &Atilde;, &Auml;, &Aring;, A, &agrave;, &aacute;, &acirc;, &atilde;, &auml;</code> &#21644; <code>&aring;</code> &#12290;</p>
<p>ClassName<span class="t-mark">(&#20165; C++)</span>&nbsp;::</p>
<dl>
<dd>ClassNameCharacter</dd>
<dd>ClassNameCharacter ClassName</dd>
</dl>
<p>ClassNameCharacter<span class="t-mark">(&#20165; C++)</span>&nbsp;::</p>
<dl>
<dd><i>SourceCharacter</i> &#20294;&#38750; <code><b>. =&nbsp;:</b></code> &#20043;&#19968;</dd>
</dl>
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
<tr>
<td class="mbox-empty-cell"></td>
<td class="mbox-text" style="">&#26412;&#33410;&#26410;&#23436;&#25104;<br />
&#21407;&#22240;&#65306;&#26242;&#26080;&#31034;&#20363;</td>
</tr>
</table>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>