feat: add stylex.md 222f5bc604

This commit is contained in:
jaywcjlove
2024-06-25 15:23:27 +00:00
parent 762edcac6d
commit 5e12d2941c
9 changed files with 2020 additions and 76 deletions

File diff suppressed because one or more lines are too long

861
docs/hook.html Normal file

File diff suppressed because one or more lines are too long

View File

@ -1131,7 +1131,7 @@ M834 80h400000v40h-400000z"></path></svg></span></span></span><span class="vlist
<!--rehype:wrap-style=background:#dba300;-->
<pre><code class="code-highlight"><span class="code-line">...
</span></code></pre>
<p><a href="https://github.com/jaywcjlove/reference/blob/ee03850619440e3700ed68ccc2ed21d3591a1490/docs/quickreference.md?plain=1#L1063-L1077" target="__blank">#示例</a><!--rehype:target=__blank--></p>
<p><a href="https://github.com/jaywcjlove/reference/blob/ee03850619440e3700ed68ccc2ed21d3591a1490/docs/quickreference.md?plain=1#L986-L991" target="__blank">#示例</a><!--rehype:target=__blank--></p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="two"><a aria-hidden="true" tabindex="-1" href="#two"><span class="icon icon-link"></span></a>Two</h3><div class="wrap-body">
<pre><code class="code-highlight"><span class="code-line">...
</span></code></pre>

View File

@ -37,12 +37,18 @@
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="介绍"><a aria-hidden="true" tabindex="-1" href="#介绍"><span class="icon icon-link"></span></a>介绍</h3><div class="wrap-body">
<p>这是开始使用正则表达式(Regex)的快速备忘单。</p>
<ul class="cols-2">
<li><a href="#python-%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">Python 中的 Regex</a> <em>(Quick Reference)</em></li>
<li><a href="#javascript-%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">JavaScript 中的 Regex</a> <em>(Quick Reference)</em></li>
<li><a href="#php%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">PHP 中的 Regex</a> <em>(Quick Reference)</em></li>
<li><a href="#java-%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">Java 中的 Regex</a> <em>(Quick Reference)</em></li>
<li><a href="#mysql%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">MySQL 中的 Regex</a> <em>(Quick Reference)</em></li>
<li><a href="./vim#vim-%E6%90%9C%E7%B4%A2%E5%92%8C%E6%9B%BF%E6%8D%A2">Vim 中的 Regex</a> <em>(Quick Reference)</em></li>
<li><a href="#python-%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">Python 中的 Regex</a><br>
<em>(速查手册)</em></li>
<li><a href="#javascript-%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">JavaScript 中的 Regex</a><br>
<em>(速查手册)</em></li>
<li><a href="#php%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">PHP 中的 Regex</a><br>
<em>(速查手册)</em></li>
<li><a href="#java-%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">Java 中的 Regex</a><br>
<em>(速查手册)</em></li>
<li><a href="#mysql%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">MySQL 中的 Regex</a><br>
<em>(速查手册)</em></li>
<li><a href="./vim#vim-%E6%90%9C%E7%B4%A2%E5%92%8C%E6%9B%BF%E6%8D%A2">Vim 中的 Regex</a><br>
<em>(速查手册)</em></li>
<li><a href="https://regex101.com/">在线 Regex 测试器</a> <em>(regex101.com)</em></li>
<li><a href="https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md">轻松学习 Regex</a> <em>(github.com)</em></li>
<li><a href="https://jaywcjlove.github.io/regexp-example">正则表达式实例搜集</a> <em>(jaywcjlove.github.io)</em></li>
@ -86,7 +92,8 @@
<table><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>[abc]</code></td><td>单个字符:<code>a</code><code>b</code><code>c</code></td></tr><tr><td align="left"><code>[^abc]</code></td><td>一个字符,除了:<code>a</code><code>b</code><code>c</code></td></tr><tr><td align="left"><code>[a-z]</code></td><td>范围内的字符:<code>a-z</code></td></tr><tr><td align="left"><code>[^a-z]</code></td><td>不在范围内的字符:<code>a-z</code></td></tr><tr><td align="left"><code>[0-9]</code></td><td>范围内的数字:<code>0-9</code></td></tr><tr><td align="left"><code>[a-zA-Z]</code></td><td>范围内的字符:<br><code>a-z</code><code>A-Z</code></td></tr><tr><td align="left"><code>[a-zA-Z0-9]</code></td><td>范围内的字符:<br><code>a-z</code><code>A-Z</code><code>0-9</code></td></tr></tbody></table>
<table class="left-align"><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>[abc]</code></td><td>单个字符:<code>a</code><code>b</code><code>c</code></td></tr><tr><td align="left"><code>[^abc]</code></td><td>一个字符,除了:<code>a</code><code>b</code><code>c</code></td></tr><tr><td align="left"><code>[a-z]</code></td><td>范围内的字符:<code>a-z</code></td></tr><tr><td align="left"><code>[^a-z]</code></td><td>不在范围内的字符:<code>a-z</code></td></tr><tr><td align="left"><code>[0-9]</code></td><td>范围内的数字:<code>0-9</code></td></tr><tr><td align="left"><code>[a-zA-Z]</code></td><td>范围内的字符:<br><code>a-z</code><code>A-Z</code></td></tr><tr><td align="left"><code>[a-zA-Z0-9]</code></td><td>范围内的字符:<br><code>a-z</code><code>A-Z</code><code>0-9</code></td></tr></tbody></table>
<!--rehype:className=left-align-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="量词"><a aria-hidden="true" tabindex="-1" href="#量词"><span class="icon icon-link"></span></a>量词</h3><div class="wrap-body">
@ -137,25 +144,76 @@
<table><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>a?</code></td><td>零个或一个<code>a</code></td></tr><tr><td align="left"><code>a*</code></td><td>零个或多个 <code>a</code></td></tr><tr><td align="left"><code>a+</code></td><td>一个或多个<code>a</code></td></tr><tr><td align="left"><code>[0-9]+</code></td><td><code>0-9</code>中的一个或多个</td></tr><tr><td align="left"><code>a{3}</code></td><td>正好 <code>3</code><code>a</code></td></tr><tr><td align="left"><code>a{3,}</code></td><td>3个或更多的<code>a</code></td></tr><tr><td align="left"><code>a{3,6}</code></td><td><code>a</code><code>3</code><code>6</code> 之间</td></tr><tr><td align="left"><code>a*</code></td><td>贪心量词</td></tr><tr><td align="left"><code>a*?</code></td><td>惰性量词</td></tr><tr><td align="left"><code>a*+</code></td><td>占有量词</td></tr></tbody></table>
<table class="left-align"><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>a?</code></td><td>零个或一个<code>a</code></td></tr><tr><td align="left"><code>a*</code></td><td>零个或多个 <code>a</code></td></tr><tr><td align="left"><code>a+</code></td><td>一个或多个<code>a</code></td></tr><tr><td align="left"><code>[0-9]+</code></td><td><code>0-9</code>中的一个或多个</td></tr><tr><td align="left"><code>a{3}</code></td><td>正好 <code>3</code><code>a</code></td></tr><tr><td align="left"><code>a{3,}</code></td><td>3个或更多的<code>a</code></td></tr><tr><td align="left"><code>a{3,6}</code></td><td><code>a</code><code>3</code><code>6</code> 之间</td></tr><tr><td align="left"><code>a*</code></td><td>贪心量词</td></tr><tr><td align="left"><code>a*?</code></td><td>惰性量词</td></tr><tr><td align="left"><code>a*+</code></td><td>占有量词</td></tr></tbody></table>
<!--rehype:className=left-align-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="常用元字符"><a aria-hidden="true" tabindex="-1" href="#常用元字符"><span class="icon icon-link"></span></a>常用元字符</h3><div class="wrap-body">
<ul class="cols-3 style-none">
<li>^</li>
<li>{</li>
<li>+</li>
<li>&#x3C;</li>
<li>[</li>
<li>*</li>
<li>)</li>
<li>></li>
<li>.</li>
<li>(</li>
<li>|</li>
<li>$</li>
<li>\</li>
<li>?</li>
</ul>
<!--rehype:className=cols-3 style-none-->
<table class="left-align"><thead><tr><th align="left">模式</th><th>描述</th></tr></thead><tbody><tr><td align="left"><code>^</code></td><td>匹配字符串的开头</td></tr><tr><td align="left"><code>{</code></td><td>开始一个数量限定符,指定出现次数</td></tr><tr><td align="left"><code>+</code></td><td>匹配前面的元素一次或多次</td></tr><tr><td align="left"><code>&#x3C;</code></td><td>非标准的正则表达式元字符(在 HTML 中常用)</td></tr><tr><td align="left"><code>[</code></td><td>开始一个字符类</td></tr><tr><td align="left"><code>*</code></td><td>匹配前面的元素零次或多次</td></tr><tr><td align="left"><code>)</code></td><td>结束捕获组</td></tr><tr><td align="left"><code>></code></td><td>非标准的正则表达式元字符(在 HTML 中常用)</td></tr><tr><td align="left"><code>.</code></td><td>匹配除换行符之外的任意字符</td></tr><tr><td align="left"><code>(</code></td><td>开始一个捕获组</td></tr><tr><td align="left"><code>|</code></td><td>在正则表达式模式中作为逻辑或操作</td></tr><tr><td align="left"><code>$</code></td><td>匹配字符串的结尾</td></tr><tr><td align="left"><code>\</code></td><td>转义元字符,使其具有字面意义</td></tr><tr><td align="left"><code>?</code></td><td>匹配前面的元素零次或一次</td></tr></tbody></table>
<!--rehype:className=left-align-->
<p>使用 <code>\</code> 转义这些特殊字符</p>
</div></div></div><div class="wrap h3body-not-exist row-span-4"><div class="wrap-header h3wrap"><h3 id="元序列"><a aria-hidden="true" tabindex="-1" href="#元序列"><span class="icon icon-link"></span></a>元序列</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-4-->
@ -371,7 +429,8 @@
<table><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>\G</code></td><td>比赛开始</td></tr><tr><td align="left"><code>^</code></td><td>字符串的开始</td></tr><tr><td align="left"><code>$</code></td><td>字符串结束</td></tr><tr><td align="left"><code>\A</code></td><td>字符串的开始</td></tr><tr><td align="left"><code>\Z</code></td><td>字符串结束</td></tr><tr><td align="left"><code>\z</code></td><td>字符串的绝对结尾</td></tr><tr><td align="left"><code>\b</code></td><td>一个词的边界</td></tr><tr><td align="left"><code>\B</code></td><td>非单词边界</td></tr></tbody></table>
<table class="left-align"><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>\G</code></td><td>比赛开始</td></tr><tr><td align="left"><code>^</code></td><td>字符串的开始</td></tr><tr><td align="left"><code>$</code></td><td>字符串结束</td></tr><tr><td align="left"><code>\A</code></td><td>字符串的开始</td></tr><tr><td align="left"><code>\Z</code></td><td>字符串结束</td></tr><tr><td align="left"><code>\z</code></td><td>字符串的绝对结尾</td></tr><tr><td align="left"><code>\b</code></td><td>一个词的边界</td></tr><tr><td align="left"><code>\B</code></td><td>非单词边界</td></tr></tbody></table>
<!--rehype:className=left-align-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="替代"><a aria-hidden="true" tabindex="-1" href="#替代"><span class="icon icon-link"></span></a>替代</h3><div class="wrap-body">
@ -434,7 +493,8 @@
<table><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>\0</code></td><td>完整的比赛内容</td></tr><tr><td align="left"><code>\1</code></td><td>捕获组 <code>1</code> 中的内容</td></tr><tr><td align="left"><code>$1</code></td><td>捕获组 <code>1</code> 中的内容</td></tr><tr><td align="left"><code>${foo}</code></td><td>捕获组 <code>foo</code> 中的内容</td></tr><tr><td align="left"><code>\x20</code></td><td>十六进制替换值</td></tr><tr><td align="left"><code>\x{06fa}</code></td><td>十六进制替换值</td></tr><tr><td align="left"><code>\t</code></td><td>标签</td></tr><tr><td align="left"><code>\r</code></td><td>回车</td></tr><tr><td align="left"><code>\n</code></td><td>新队</td></tr><tr><td align="left"><code>\f</code></td><td>换页</td></tr><tr><td align="left"><code>\U</code></td><td>大写转换</td></tr><tr><td align="left"><code>\L</code></td><td>小写转换</td></tr><tr><td align="left"><code>\E</code></td><td>终止任何转换</td></tr></tbody></table>
<table class="left-align"><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>\0</code></td><td>完整的比赛内容</td></tr><tr><td align="left"><code>\1</code></td><td>捕获组 <code>1</code> 中的内容</td></tr><tr><td align="left"><code>$1</code></td><td>捕获组 <code>1</code> 中的内容</td></tr><tr><td align="left"><code>${foo}</code></td><td>捕获组 <code>foo</code> 中的内容</td></tr><tr><td align="left"><code>\x20</code></td><td>十六进制替换值</td></tr><tr><td align="left"><code>\x{06fa}</code></td><td>十六进制替换值</td></tr><tr><td align="left"><code>\t</code></td><td>标签</td></tr><tr><td align="left"><code>\r</code></td><td>回车</td></tr><tr><td align="left"><code>\n</code></td><td>新队</td></tr><tr><td align="left"><code>\f</code></td><td>换页</td></tr><tr><td align="left"><code>\U</code></td><td>大写转换</td></tr><tr><td align="left"><code>\L</code></td><td>小写转换</td></tr><tr><td align="left"><code>\E</code></td><td>终止任何转换</td></tr></tbody></table>
<!--rehype:className=left-align-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="组构造"><a aria-hidden="true" tabindex="-1" href="#组构造"><span class="icon icon-link"></span></a>组构造</h3><div class="wrap-body">
@ -489,7 +549,8 @@
<table><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>(...)</code></td><td>捕获所有封闭的东西</td></tr><tr><td align="left"><code>(a|b)</code></td><td>匹配 <code>a</code><code>b</code></td></tr><tr><td align="left"><code>(?:...)</code></td><td>匹配随附的所有内容</td></tr><tr><td align="left"><code>(?>...)</code></td><td>原子组(非捕获)</td></tr><tr><td align="left"><code>(?|...)</code></td><td>重复的子模式组号</td></tr><tr><td align="left"><code>(?#...)</code></td><td>注解</td></tr><tr><td align="left"><code>(?'name'...)</code></td><td>命名捕获组</td></tr><tr><td align="left"><code>(?&#x3C;name>...)</code></td><td>命名捕获组</td></tr><tr><td align="left"><code>(?P&#x3C;name>...)</code></td><td>命名捕获组</td></tr><tr><td align="left"><code>(?imsxXU)</code></td><td>内联修饰符</td></tr><tr><td align="left"><code>(?(DEFINE)...)</code></td><td>在使用它们之前预定义模式</td></tr></tbody></table>
<table class="left-align"><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>(...)</code></td><td>捕获所有封闭的东西</td></tr><tr><td align="left"><code>(a|b)</code></td><td>匹配 <code>a</code><code>b</code></td></tr><tr><td align="left"><code>(?:...)</code></td><td>匹配随附的所有内容</td></tr><tr><td align="left"><code>(?>...)</code></td><td>原子组(非捕获)</td></tr><tr><td align="left"><code>(?|...)</code></td><td>重复的子模式组号</td></tr><tr><td align="left"><code>(?#...)</code></td><td>注解</td></tr><tr><td align="left"><code>(?'name'...)</code></td><td>命名捕获组</td></tr><tr><td align="left"><code>(?&#x3C;name>...)</code></td><td>命名捕获组</td></tr><tr><td align="left"><code>(?P&#x3C;name>...)</code></td><td>命名捕获组</td></tr><tr><td align="left"><code>(?imsxXU)</code></td><td>内联修饰符</td></tr><tr><td align="left"><code>(?(DEFINE)...)</code></td><td>在使用它们之前预定义模式</td></tr></tbody></table>
<!--rehype:className=left-align-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="断言"><a aria-hidden="true" tabindex="-1" href="#断言"><span class="icon icon-link"></span></a>断言</h3><div class="wrap-body">
@ -1155,7 +1216,8 @@
<table><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>(in|out)put</code></td><td>匹配 <yel>input</yel><yel>output</yel></td></tr><tr><td align="left"><code>\d{5}(-\d{4})?</code></td><td>美国邮政编码 <em>(“+ 4”可选)</em></td></tr></tbody></table>
<table class="left-align"><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>(in|out)put</code></td><td>匹配 <yel>input</yel><yel>output</yel></td></tr><tr><td align="left"><code>\d{5}(-\d{4})?</code></td><td>美国邮政编码 <em>(“+ 4”可选)</em></td></tr></tbody></table>
<!--rehype:className=left-align-->
<p>如果组后匹配失败,解析器会尝试每个替代方案。
<br>
可能导致灾难性的回溯。</p>
@ -1216,9 +1278,11 @@
<table><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>(?>red|green|blue)</code></td><td>比非捕获更快</td></tr><tr><td align="left"><code>(?>id|identity)\b</code></td><td>匹配 <yel>id</yel>,但不匹配 <yel>id</yel>entity</td></tr></tbody></table>
<p>"id" 匹配,但 <code>\b</code> 在原子组之后失败,
<table class="left-align"><thead><tr><th align="left">范例</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>(?>red|green|blue)</code></td><td>比非捕获更快</td></tr><tr><td align="left"><code>(?>id|identity)\b</code></td><td>匹配 <yel>id</yel>,但不匹配 <yel>id</yel>entity</td></tr></tbody></table>
<!--rehype:className=left-align-->
<p><yel>id</yel> 匹配,但 <code>\b</code> 在原子组之后失败,
解析器不会回溯到组以重试“身份”</p>
<hr>
<p>如果替代品重叠,请从长到短命令。</p>
</div></div></div><div class="wrap h3body-not-exist col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3 id="零宽度断言-lookaround前后预查"><a aria-hidden="true" tabindex="-1" href="#零宽度断言-lookaround前后预查"><span class="icon icon-link"></span></a>零宽度断言 Lookaround(前后预查)</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2 row-span-2-->
@ -1749,36 +1813,42 @@
</span></code></pre>
</div></div></div><div class="wrap h3body-exist col-span-2 row-span-3"><div class="wrap-header h3wrap"><h3 id="实例"><a aria-hidden="true" tabindex="-1" href="#实例"><span class="icon icon-link"></span></a>实例</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2 row-span-3-->
<h4 id="research"><a aria-hidden="true" tabindex="-1" href="#research"><span class="icon icon-link"></span></a>re.search()</h4>
<h4 style="text-align: left;color: var(--primary-color);" id="research"><a aria-hidden="true" tabindex="-1" href="#research"><span class="icon icon-link"></span></a>re.search()</h4>
<!--rehype:style=text-align: left;color: var(--primary-color);-->
<pre class="language-python"><code class="language-python code-highlight"><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> sentence <span class="token operator">=</span> <span class="token string">'This is a sample string'</span>
</span><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> <span class="token builtin">bool</span><span class="token punctuation">(</span>re<span class="token punctuation">.</span>search<span class="token punctuation">(</span><span class="token string">r'this'</span><span class="token punctuation">,</span> sentence<span class="token punctuation">,</span> flags<span class="token operator">=</span>re<span class="token punctuation">.</span>I<span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token boolean">True</span>
</span><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> <span class="token builtin">bool</span><span class="token punctuation">(</span>re<span class="token punctuation">.</span>search<span class="token punctuation">(</span><span class="token string">r'xyz'</span><span class="token punctuation">,</span> sentence<span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token boolean">False</span>
</span></code></pre>
<h4 id="refindall"><a aria-hidden="true" tabindex="-1" href="#refindall"><span class="icon icon-link"></span></a>re.findall()</h4>
<h4 style="text-align: left;color: var(--primary-color);" id="refindall"><a aria-hidden="true" tabindex="-1" href="#refindall"><span class="icon icon-link"></span></a>re.findall()</h4>
<!--rehype:style=text-align: left;color: var(--primary-color);-->
<pre class="language-python"><code class="language-python code-highlight"><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> re<span class="token punctuation">.</span>findall<span class="token punctuation">(</span><span class="token string">r'\bs?pare?\b'</span><span class="token punctuation">,</span> <span class="token string">'par spar apparent spare part pare'</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token string">'par'</span><span class="token punctuation">,</span> <span class="token string">'spar'</span><span class="token punctuation">,</span> <span class="token string">'spare'</span><span class="token punctuation">,</span> <span class="token string">'pare'</span><span class="token punctuation">]</span>
</span><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> re<span class="token punctuation">.</span>findall<span class="token punctuation">(</span><span class="token string">r'\b0*[1-9]\d{2,}\b'</span><span class="token punctuation">,</span> <span class="token string">'0501 035 154 12 26 98234'</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token string">'0501'</span><span class="token punctuation">,</span> <span class="token string">'154'</span><span class="token punctuation">,</span> <span class="token string">'98234'</span><span class="token punctuation">]</span>
</span></code></pre>
<h4 id="refinditer"><a aria-hidden="true" tabindex="-1" href="#refinditer"><span class="icon icon-link"></span></a>re.finditer()</h4>
<h4 style="text-align: left;color: var(--primary-color);" id="refinditer"><a aria-hidden="true" tabindex="-1" href="#refinditer"><span class="icon icon-link"></span></a>re.finditer()</h4>
<!--rehype:style=text-align: left;color: var(--primary-color);-->
<pre class="language-python"><code class="language-python code-highlight"><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> m_iter <span class="token operator">=</span> re<span class="token punctuation">.</span>finditer<span class="token punctuation">(</span><span class="token string">r'[0-9]+'</span><span class="token punctuation">,</span> <span class="token string">'45 349 651 593 4 204'</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> <span class="token punctuation">[</span>m<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token keyword">for</span> m <span class="token keyword">in</span> m_iter <span class="token keyword">if</span> <span class="token builtin">int</span><span class="token punctuation">(</span>m<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">&#x3C;</span> <span class="token number">350</span><span class="token punctuation">]</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token string">'45'</span><span class="token punctuation">,</span> <span class="token string">'349'</span><span class="token punctuation">,</span> <span class="token string">'4'</span><span class="token punctuation">,</span> <span class="token string">'204'</span><span class="token punctuation">]</span>
</span></code></pre>
<h4 id="resplit"><a aria-hidden="true" tabindex="-1" href="#resplit"><span class="icon icon-link"></span></a>re.split()</h4>
<h4 style="text-align: left;color: var(--primary-color);" id="resplit"><a aria-hidden="true" tabindex="-1" href="#resplit"><span class="icon icon-link"></span></a>re.split()</h4>
<!--rehype:style=text-align: left;color: var(--primary-color);-->
<pre class="language-python"><code class="language-python code-highlight"><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> re<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">r'\d+'</span><span class="token punctuation">,</span> <span class="token string">'Sample123string42with777numbers'</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token string">'Sample'</span><span class="token punctuation">,</span> <span class="token string">'string'</span><span class="token punctuation">,</span> <span class="token string">'with'</span><span class="token punctuation">,</span> <span class="token string">'numbers'</span><span class="token punctuation">]</span>
</span></code></pre>
<h4 id="resub"><a aria-hidden="true" tabindex="-1" href="#resub"><span class="icon icon-link"></span></a>re.sub()</h4>
<h4 style="text-align: left;color: var(--primary-color);" id="resub"><a aria-hidden="true" tabindex="-1" href="#resub"><span class="icon icon-link"></span></a>re.sub()</h4>
<!--rehype:style=text-align: left;color: var(--primary-color);-->
<pre class="language-python"><code class="language-python code-highlight"><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> ip_lines <span class="token operator">=</span> <span class="token string">"catapults\nconcatenate\ncat"</span>
</span><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">print</span><span class="token punctuation">(</span>re<span class="token punctuation">.</span>sub<span class="token punctuation">(</span><span class="token string">r'^'</span><span class="token punctuation">,</span> <span class="token string">r'* '</span><span class="token punctuation">,</span> ip_lines<span class="token punctuation">,</span> flags<span class="token operator">=</span>re<span class="token punctuation">.</span>M<span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token operator">*</span> catapults
</span><span class="code-line"><span class="token operator">*</span> concatenate
</span><span class="code-line"><span class="token operator">*</span> cat
</span></code></pre>
<h4 id="recompile"><a aria-hidden="true" tabindex="-1" href="#recompile"><span class="icon icon-link"></span></a>re.compile()</h4>
<h4 style="text-align: left;color: var(--primary-color);" id="recompile"><a aria-hidden="true" tabindex="-1" href="#recompile"><span class="icon icon-link"></span></a>re.compile()</h4>
<!--rehype:style=text-align: left;color: var(--primary-color);-->
<pre class="language-python"><code class="language-python code-highlight"><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> pet <span class="token operator">=</span> re<span class="token punctuation">.</span><span class="token builtin">compile</span><span class="token punctuation">(</span><span class="token string">r'dog'</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token operator">>></span><span class="token operator">></span> <span class="token builtin">type</span><span class="token punctuation">(</span>pet<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token operator">&#x3C;</span><span class="token keyword">class</span> <span class="token string">'_sre.SRE_Pattern'</span><span class="token operator">></span>

View File

@ -66,7 +66,7 @@
</span><span class="code-line"> <span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token method function property-access">log</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">Clicked </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token operator">++</span>count<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> times</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
<p>使用 RxJS 可以隔离状态。</p>
<p>使用 <code>RxJS</code> 可以隔离状态。</p>
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line"><span class="token keyword module">import</span> <span class="token imports"><span class="token punctuation">{</span> fromEvent<span class="token punctuation">,</span> scan <span class="token punctuation">}</span></span> <span class="token keyword module">from</span> <span class="token string">'rxjs'</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">fromEvent</span><span class="token punctuation">(</span><span class="token dom variable">document</span><span class="token punctuation">,</span> <span class="token string">'click'</span><span class="token punctuation">)</span>
@ -78,7 +78,7 @@
<p>扫描操作符的工作原理与数组的 <code>reduce</code> 类似。它接受一个暴露给回调函数的值。回调的返回值将成为下次回调运行时公开的下一个值。</p>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="流"><a aria-hidden="true" tabindex="-1" href="#流"><span class="icon icon-link"></span></a></h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<p>RxJS 拥有一整套运算符,可以帮助您控制事件如何流经您的可观察对象。这是使用纯 JavaScript 每秒最多允许一次点击的方式:</p>
<p><code>RxJS</code> 拥有一整套运算符,可以帮助您控制事件如何流经您的可观察对象。这是使用纯 JavaScript 每秒最多允许一次点击的方式:</p>
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line"><span class="token keyword">let</span> count <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token keyword">let</span> rate <span class="token operator">=</span> <span class="token number">1000</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token keyword">let</span> lastClick <span class="token operator">=</span> <span class="token known-class-name class-name">Date</span><span class="token punctuation">.</span><span class="token method function property-access">now</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> rate<span class="token punctuation">;</span>
@ -130,19 +130,19 @@
</span><span class="code-line">obs<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出: 1 2 3</span>
</span></code></pre>
<p>创建一个立即发送指定值并完成的 Observable</p>
<p>创建一个立即发送指定值并完成的 <code>Observable</code></p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="from"><a aria-hidden="true" tabindex="-1" href="#from"><span class="icon icon-link"></span></a>from</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs <span class="token operator">=</span> <span class="token keyword module">from</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">obs<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出: 1 2 3</span>
</span></code></pre>
<p>从 Promise、数组、可迭代对象创建 Observable</p>
<p>从 Promise、数组、可迭代对象创建 <code>Observable</code></p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="interval"><a aria-hidden="true" tabindex="-1" href="#interval"><span class="icon icon-link"></span></a>interval</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs <span class="token operator">=</span> <span class="token function">interval</span><span class="token punctuation">(</span><span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">obs<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 每秒输出一次递增的数字</span>
</span></code></pre>
<p>创建一个定时发送递增整数的 Observable</p>
<p>创建一个定时发送递增整数的 <code>Observable</code></p>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="fromevent"><a aria-hidden="true" tabindex="-1" href="#fromevent"><span class="icon icon-link"></span></a>fromEvent</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> button <span class="token operator">=</span> <span class="token dom variable">document</span><span class="token punctuation">.</span><span class="token method function property-access">querySelector</span><span class="token punctuation">(</span><span class="token string">'button'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
@ -151,7 +151,7 @@
</span><span class="code-line"> <span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token method function property-access">log</span><span class="token punctuation">(</span><span class="token string">'Button clicked!'</span><span class="token punctuation">,</span> event<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
<p>从 DOM 事件创建 Observable</p>
<p>从 DOM 事件创建 <code>Observable</code></p>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="操作符"><a aria-hidden="true" tabindex="-1" href="#操作符"><span class="icon icon-link"></span></a>操作符</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="map"><a aria-hidden="true" tabindex="-1" href="#map"><span class="icon icon-link"></span></a>map</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs <span class="token operator">=</span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">pipe</span><span class="token punctuation">(</span>
@ -160,7 +160,7 @@
</span><span class="code-line">obs<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出: 2 4 6</span>
</span></code></pre>
<p>Observable 发出的每个值应用一个函数</p>
<p><code>Observable</code> 发出的每个值应用一个函数</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="filter"><a aria-hidden="true" tabindex="-1" href="#filter"><span class="icon icon-link"></span></a>filter</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs <span class="token operator">=</span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">pipe</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token function">filter</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token arrow operator">=></span> x <span class="token operator">%</span> <span class="token number">2</span> <span class="token operator">===</span> <span class="token number">0</span><span class="token punctuation">)</span>
@ -168,7 +168,7 @@
</span><span class="code-line">obs<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出: 2</span>
</span></code></pre>
<p>过滤 Observable 发出的值</p>
<p>过滤 <code>Observable</code> 发出的值</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="switchmap"><a aria-hidden="true" tabindex="-1" href="#switchmap"><span class="icon icon-link"></span></a>switchMap</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs <span class="token operator">=</span> <span class="token function">interval</span><span class="token punctuation">(</span><span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">pipe</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token function">switchMap</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token string">'Hello'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
@ -177,7 +177,7 @@
</span><span class="code-line">obs<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 每秒输出一次 "Hello"</span>
</span></code></pre>
<p>Observable 每个值映射成 Observable 并订阅,前一个订阅将被取消</p>
<p><code>Observable</code> 每个值映射成 <code>Observable</code> 并订阅,前一个订阅将被取消</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="mergemap"><a aria-hidden="true" tabindex="-1" href="#mergemap"><span class="icon icon-link"></span></a>mergeMap</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs <span class="token operator">=</span> <span class="token function">interval</span><span class="token punctuation">(</span><span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">pipe</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token function">mergeMap</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token string">'Hello'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
@ -186,7 +186,7 @@
</span><span class="code-line">obs<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 每秒输出一次 "Hello"</span>
</span></code></pre>
<p>类似 switchMap但允许多个内部 Observable 并发执行</p>
<p>类似 <code>switchMap</code>,但允许多个内部 <code>Observable</code> 并发执行</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="catcherror"><a aria-hidden="true" tabindex="-1" href="#catcherror"><span class="icon icon-link"></span></a>catchError</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs <span class="token operator">=</span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">pipe</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
@ -198,7 +198,7 @@
</span><span class="code-line">obs<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出: 1 发现一个错误Error!</span>
</span></code></pre>
<p>捕获 Observable 链中的错误</p>
<p>捕获 <code>Observable</code> 链中的错误</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="debouncetime"><a aria-hidden="true" tabindex="-1" href="#debouncetime"><span class="icon icon-link"></span></a>debounceTime</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs <span class="token operator">=</span> <span class="token function">fromEvent</span><span class="token punctuation">(</span><span class="token dom variable">document</span><span class="token punctuation">,</span><span class="token string">'mousemove'</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">.</span><span class="token method function property-access">pipe</span><span class="token punctuation">(</span><span class="token function">debounceTime</span><span class="token punctuation">(</span><span class="token number">300</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
@ -207,7 +207,7 @@
</span><span class="code-line"> <span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token method function property-access">log</span><span class="token punctuation">(</span><span class="token string">'Mouse moved!'</span><span class="token punctuation">,</span> event<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
<p>延迟处理,直到源 Observable 停止发出数据一定时间</p>
<p>延迟处理,直到源 <code>Observable</code> 停止发出数据一定时间</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="distinctuntilchanged"><a aria-hidden="true" tabindex="-1" href="#distinctuntilchanged"><span class="icon icon-link"></span></a>distinctUntilChanged</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs <span class="token operator">=</span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">pipe</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token function">distinctUntilChanged</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
@ -235,7 +235,7 @@
</span><span class="code-line">combined<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 每秒输出一次两个 observables 的最新值</span>
</span></code></pre>
<p>当两个 Observable 都发出新的值时,发出它们的组合</p>
<p>当两个 <code>Observable</code> 都发出新的值时,发出它们的组合</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="concat"><a aria-hidden="true" tabindex="-1" href="#concat"><span class="icon icon-link"></span></a>concat</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs1 <span class="token operator">=</span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token keyword">const</span> obs2 <span class="token operator">=</span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
@ -243,7 +243,7 @@
</span><span class="code-line">combined<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出: 1 2 3 4 5 6</span>
</span></code></pre>
<p>按顺序连接多个 Observable</p>
<p>按顺序连接多个 <code>Observable</code></p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="merge"><a aria-hidden="true" tabindex="-1" href="#merge"><span class="icon icon-link"></span></a>merge</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs1 <span class="token operator">=</span> <span class="token function">interval</span><span class="token punctuation">(</span><span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">pipe</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token arrow operator">=></span> <span class="token string">'A'</span> <span class="token operator">+</span> x<span class="token punctuation">)</span>
@ -255,7 +255,7 @@
</span><span class="code-line">combined<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 每秒输出 "A" 和 "B" 开头的递增数字</span>
</span></code></pre>
<p>将多个 Observable 合并为一个</p>
<p>将多个 <code>Observable</code> 合并为一个</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="forkjoin"><a aria-hidden="true" tabindex="-1" href="#forkjoin"><span class="icon icon-link"></span></a>forkJoin</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs1 <span class="token operator">=</span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token keyword">const</span> obs2 <span class="token operator">=</span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
@ -263,7 +263,7 @@
</span><span class="code-line">combined<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出: [3, 'C']</span>
</span></code></pre>
<p>等待所有 Observable 完成,然后发出它们的最后一个值的数组</p>
<p>等待所有 <code>Observable</code> 完成,然后发出它们的最后一个值的数组</p>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="错误处理"><a aria-hidden="true" tabindex="-1" href="#错误处理"><span class="icon icon-link"></span></a>错误处理</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="retrywhen"><a aria-hidden="true" tabindex="-1" href="#retrywhen"><span class="icon icon-link"></span></a>retryWhen</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
@ -276,7 +276,7 @@
</span><span class="code-line">obs<span class="token punctuation">.</span><span class="token method function property-access">subscribe</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">,</span> <span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">error</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出: 出了些问题! (每秒重试一次)</span>
</span></code></pre>
<p>Observable 发出错误时重试</p>
<p><code>Observable</code> 发出错误时重试</p>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="实用操作符"><a aria-hidden="true" tabindex="-1" href="#实用操作符"><span class="icon icon-link"></span></a>实用操作符</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="tap"><a aria-hidden="true" tabindex="-1" href="#tap"><span class="icon icon-link"></span></a>tap</h3><div class="wrap-body">
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line"><span class="token keyword">const</span> obs <span class="token operator">=</span> <span class="token keyword">of</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">pipe</span><span class="token punctuation">(</span>

881
docs/stylex.html Normal file

File diff suppressed because one or more lines are too long