<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>VSCode on IT 空間</title><link>https://blog.jiatool.com/tags/VSCode/</link><description>Recent content in VSCode on IT 空間</description><generator>Hugo -- gohugo.io</generator><language>zh</language><managingEditor>jia@jiatool.com (Jia)</managingEditor><webMaster>jia@jiatool.com (Jia)</webMaster><copyright>&amp;copy;{year}, Jia All Rights Reserved</copyright><lastBuildDate>Sun, 13 Aug 2023 13:30:00 +0800</lastBuildDate><atom:link href="https://blog.jiatool.com/tags/VSCode/index.xml" rel="self" type="application/rss+xml"/><item><title>VS Code 小技巧 — 將程式碼摺疊起來，讓畫面更簡潔</title><link>https://blog.jiatool.com/posts/vscode_folding/</link><pubDate>Sun, 13 Aug 2023 13:30:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sun, 13 Aug 2023 13:30:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/vscode_folding/</guid><description>前言 今天再來分享一個 VS Code 的小技巧，有時候程式碼比較長，我們想要將其摺疊起來、分不同的區塊，這時就可以使用編輯器內建的「程式碼摺疊」功能。 而對</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>今天再來分享一個 VS Code 的小技巧，有時候程式碼比較長，我們想要將其摺疊起來、分不同的區塊，這時就可以使用編輯器內建的「程式碼摺疊」功能。&lt;/p>
&lt;p>而對於想要自定義摺疊區域也是有辦法的哦，讓我們看下去~&lt;/p>
&lt;br/>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_folding/computer.jpg" alt="圖片來源：Unsplash" data-caption="圖片來源：Unsplash" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
圖片來源：Unsplash
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;!--adsense-->
&lt;br/>
&lt;h2 id="程式碼摺疊">程式碼摺疊&lt;/h2>
&lt;p>根據&lt;a href="https://code.visualstudio.com/docs/editor/codebasics#_folding" target="_blank" rel="noopener">
官方的說法
&lt;/a>，VS Code 編輯器默認情況下，折疊區域是根據縮進進行評估的。&lt;/p>
&lt;p>如下圖行數右邊、程式碼左邊之間有 &amp;quot;折疊圖示&amp;quot; 的箭頭：&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_folding/code0.jpg" alt="程式碼摺疊圖示" data-caption="程式碼摺疊圖示" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
程式碼摺疊圖示
&lt;/figcaption>
&lt;/figure>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_folding/code0_.jpg" alt="程式碼摺疊起來的樣子" data-caption="程式碼摺疊起來的樣子" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
程式碼摺疊起來的樣子
&lt;/figcaption>
&lt;/figure>
&lt;p>而針對幾種程式語言 (Markdown、HTML、CSS、LESS、SCSS、JSON)，已提供語法感知折疊。&lt;/p>
&lt;br/>
&lt;p>這個功能應該大部分的人都有使用過，但接下來的 &amp;quot;自定義折疊區域&amp;quot; 使用過的人應該就不多了。&lt;/p>
&lt;br/>
&lt;h2 id="折疊區域標記">折疊區域標記&lt;/h2>
&lt;p>如果是想要自定義折疊區域，也可以通過每種語言定義的標記來定義，像是 Python 是使用 &lt;code># region&lt;/code> 和 &lt;code># endregion&lt;/code>。&lt;/p>
&lt;p>像是下圖左邊為原本的 Python 程式碼，而這個 Class 有多個不同類型的屬性，除了我覺得太占版面，想要把它摺疊起來以外，我還想要區分不同類型，就可以如右邊那樣加入折疊區域標記 (後面還可以為它加上備註，這樣摺疊起來後也可以清楚的知道這段程式的用途)。&lt;/p>
&lt;p>可以看到程式碼左邊會出現 &amp;quot;折疊圖示&amp;quot; 的箭頭。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_folding/code1.jpg" alt="原本的程式碼 與 加入折疊區域標記 對比" data-caption="原本的程式碼 與 加入折疊區域標記 對比" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='900px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:900px;height:;"/>
&lt;figcaption style="text-align: center;">
原本的程式碼 與 加入折疊區域標記 對比
&lt;/figcaption>
&lt;/figure>
&lt;p>我就可以像這樣點擊圖示來將其摺疊，這樣版面就可以很清爽~&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_folding/code2.jpg" alt="折疊程式碼區域" data-caption="折疊程式碼區域" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
折疊程式碼區域
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;p>當然你想要嵌套多層也是可以的：&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_folding/code3.jpg" alt="嵌套多層折疊區域" data-caption="嵌套多層折疊區域" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='900px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:900px;height:;"/>
&lt;figcaption style="text-align: center;">
嵌套多層折疊區域
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;br/>
&lt;p>目前 VS Code 編輯器定義了以下幾種程式語言的折疊標記：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Language&lt;/th>
&lt;th>Start region&lt;/th>
&lt;th>End region&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Bat&lt;/td>
&lt;td>&lt;code>::#region&lt;/code> 或 &lt;code>REM #region&lt;/code>&lt;/td>
&lt;td>&lt;code>::#endregion&lt;/code> 或 &lt;code>REM #endregion&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C#&lt;/td>
&lt;td>&lt;code>#region&lt;/code>&lt;/td>
&lt;td>&lt;code>#endregion&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C/C++&lt;/td>
&lt;td>&lt;code>#pragma region&lt;/code>&lt;/td>
&lt;td>&lt;code>#pragma endregion&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CSS/Less/SCSS&lt;/td>
&lt;td>&lt;code>/*#region*/&lt;/code>&lt;/td>
&lt;td>&lt;code>/*#endregion*/&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Coffeescript&lt;/td>
&lt;td>&lt;code>#region&lt;/code>&lt;/td>
&lt;td>&lt;code>#endregion&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>F#&lt;/td>
&lt;td>&lt;code>//#region&lt;/code> 或 &lt;code>(#_region)&lt;/code>&lt;/td>
&lt;td>&lt;code>//#endregion&lt;/code> 或 &lt;code>(#_endregion)&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Java&lt;/td>
&lt;td>&lt;code>//#region&lt;/code> 或 &lt;code>//&amp;lt;editor-fold&amp;gt;&lt;/code>&lt;/td>
&lt;td>&lt;code>// #endregion&lt;/code> 或 &lt;code>//&amp;lt;/editor-fold&amp;gt;&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Markdown&lt;/td>
&lt;td>&lt;code>&amp;lt;!-- #region --&amp;gt;&lt;/code>&lt;/td>
&lt;td>&lt;code>&amp;lt;!-- #endregion --&amp;gt;&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Perl5&lt;/td>
&lt;td>&lt;code>#region&lt;/code> 或 &lt;code>=pod&lt;/code>&lt;/td>
&lt;td>&lt;code>#endregion&lt;/code> 或 &lt;code>=cut&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PHP&lt;/td>
&lt;td>&lt;code>#region&lt;/code>&lt;/td>
&lt;td>&lt;code>#endregion&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PowerShell&lt;/td>
&lt;td>&lt;code>#region&lt;/code>&lt;/td>
&lt;td>&lt;code>#endregion&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Python&lt;/td>
&lt;td>&lt;code>#region&lt;/code> 或 &lt;code># region&lt;/code>&lt;/td>
&lt;td>&lt;code>#endregion&lt;/code> 或 &lt;code># endregion&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TypeScript/JavaScript&lt;/td>
&lt;td>&lt;code>//#region&lt;/code>&lt;/td>
&lt;td>&lt;code>//#endregion&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Visual Basic&lt;/td>
&lt;td>&lt;code>#Region&lt;/code>&lt;/td>
&lt;td>&lt;code>#End Region&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;br/>
&lt;br/>
&lt;p>另外對於一些沒有程式語言支持的情況，想要新增摺疊區域的話，可以使用以下快捷鍵：&lt;/p>
&lt;ul>
&lt;li>創建折疊：先 &lt;code>Ctrl+K&lt;/code> 再 &lt;code>Ctrl+,&lt;/code>&lt;/li>
&lt;li>移除折疊：先 &lt;code>Ctrl+K&lt;/code> 再 &lt;code>Ctrl+.&lt;/code>&lt;/li>
&lt;/ul>
&lt;br/>
&lt;!--adsense-->
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>折疊區域標記只是 VS Code 編輯器定義的語法，對於落落長的程式，我們可以使用此技巧來方便我們對程式碼區分不同的區塊、摺疊讓版面更清爽，實際上它對程式碼執行並沒有任何影響 (只算是註解)。&lt;/p>
&lt;p>我沒記錯的話，Visual Studio 那邊應該也可以使用一樣的折疊區域標記語法。&lt;/p>
&lt;br/>
&lt;p>歡迎追蹤『&lt;a href="https://www.facebook.com/jiatool" target="_blank" rel="noopener">
IT空間
&lt;/a>』FB 粉專，取得最新發文通知🔔&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;p>參考：&lt;br />
&lt;a href="https://code.visualstudio.com/docs/editor/codebasics#_folding" target="_blank" rel="noopener">
程式碼摺疊說明 | VS Code 官方文件
&lt;/a>&lt;/p>
&lt;br/>
&lt;blockquote>
&lt;p>在錯誤的道路上，奔跑也沒有用。&lt;br />
There is no use running if you&amp;rsquo;re on the wrong road.&lt;/p>
&lt;p align="right">—— 華倫‧巴菲特 (Warren Buffett)&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/vscode_folding.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/vscode_folding_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>VSCode</category><category>小技巧</category><category>分享</category></item><item><title>VS Code 小技巧 — 使用正規表達式(Regular Expression)來尋找和取代文字</title><link>https://blog.jiatool.com/posts/vscode_regex/</link><pubDate>Sat, 03 Jun 2023 21:30:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Fri, 16 Jun 2023 22:25:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/vscode_regex/</guid><description>前言 在 Visual Studio Code 內你有沒有遇過一些情況，想要尋找(或取代)某些文字，但不知道怎麼下手。 今天來分享一個 VS Code 的小技巧，使用正規表達式(Regular</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>在 Visual Studio Code 內你有沒有遇過一些情況，想要尋找(或取代)某些文字，但不知道怎麼下手。&lt;/p>
&lt;p>今天來分享一個 VS Code 的小技巧，使用正規表達式(Regular Expression)來尋找和取代文字，針對一些比較複雜的情況會非常好用！！&lt;/p>
&lt;br/>
&lt;p>文章我列出幾種我實際使用過的語法給各位參考。&lt;br />
以下技巧學起來後，未來需要尋找或取代，不用在那邊一行一行耗眼力尋找，或 ctrl+c、ctrl+v 費神練手速了。&lt;/p>
&lt;br/>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_regex/transition_image.jpg" alt="圖片來源：Unsplash" data-caption="圖片來源：Unsplash" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='750px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:750px;height:;"/>
&lt;figcaption style="text-align: center;">
圖片來源：Unsplash
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;!--adsense-->
&lt;br/>
&lt;h2 id="正規表達式regular-expression">正規表達式(Regular Expression)&lt;/h2>
&lt;p>先來快速認識常用的正規表達式(Regular Expression)語法：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>符號&lt;/th>
&lt;th>說明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>google&lt;/code>&lt;/td>
&lt;td>匹配 google。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>[abc]&lt;/code>&lt;/td>
&lt;td>匹配 a 或 b 或 c 的字元。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>[a-z]&lt;/code>&lt;/td>
&lt;td>匹配 a~z 之間的字元。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>[^a-z]&lt;/code>&lt;/td>
&lt;td>匹配 所有非 a~z 之間的字元。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>g..gle&lt;/code>&lt;/td>
&lt;td>&lt;code>.&lt;/code> 代表換行字元以外的任意字元(等同於 &lt;code>[^\n\r]&lt;/code>)，g 後接著兩個字元，然後接著是 gle。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>^hello&lt;/code>&lt;/td>
&lt;td>匹配行以 hello 開頭。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>world$&lt;/code>&lt;/td>
&lt;td>匹配行以 world 結尾。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>go?gle&lt;/code>&lt;/td>
&lt;td>代表前一個字元出現零次或一次 (0 或 1 次)，匹配 ggle、gogle 等，等同於 &lt;code>{0,1}&lt;/code>。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>go*gle&lt;/code>&lt;/td>
&lt;td>代表前一個字元出現任意次數 (0 次以上)，匹配 ggle、gogle、google 等，等同於 &lt;code>{0,}&lt;/code>。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>go+gle&lt;/code>&lt;/td>
&lt;td>代表前一個字元至少出現一次 (1 次以上)，匹配 gogle、google 等，等同於 &lt;code>{1,}&lt;/code>。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>go{m}gle&lt;/code>&lt;/td>
&lt;td>指定前一個字元出現 m 次。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>go{m,}gle&lt;/code>&lt;/td>
&lt;td>指定前一個字元出現 m 次以上。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>go{m,n}gle&lt;/code>&lt;/td>
&lt;td>指定前一個字元出現次數，m~n 之間的次數。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>A\|B&lt;/code>&lt;/td>
&lt;td>匹配 A 或 B 字串，&lt;code>true\|false&lt;/code> 匹配 true 或 false 字串。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\&lt;/code>&lt;/td>
&lt;td>下一個字符標記為特殊字元、或原義字元。&lt;code>\?&lt;/code> 匹配 &lt;code>?&lt;/code> (因為 &lt;code>?&lt;/code> 本身在正規表達式裡是代表不同意思)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>()&lt;/code>&lt;/td>
&lt;td>一個子表達式的開始和結束，提取子表達式字串供之後使用。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$1&lt;/code>&lt;/td>
&lt;td>第一組使用 &lt;code>()&lt;/code> 匹配的部分，&lt;code>$2&lt;/code> 代表第二組、&lt;code>$0&lt;/code> 代表完整匹配的內容。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;br/>
&lt;p>特別序列 (Special Sequences)：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>符號&lt;/th>
&lt;th>說明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>\d&lt;/code>&lt;/td>
&lt;td>所有數字，等同於 &lt;code>[0-9]&lt;/code>。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\D&lt;/code>&lt;/td>
&lt;td>所有非數字，等同於 &lt;code>[^0-9]&lt;/code>。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\w&lt;/code>&lt;/td>
&lt;td>所有字母、數字、底線，等同於 &lt;code>[A-Za-z0-9_]&lt;/code>。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\W&lt;/code>&lt;/td>
&lt;td>所有非字母、數字、底線，等同於 &lt;code>[^A-Za-z0-9_]&lt;/code>。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\s&lt;/code>&lt;/td>
&lt;td>任意空白字元，等同於 &lt;code>[ \f\n\r\t\v]&lt;/code>。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\S&lt;/code>&lt;/td>
&lt;td>任意非空白字元，等同於 &lt;code>[^ \f\n\r\t\v]&lt;/code>。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\n&lt;/code>&lt;/td>
&lt;td>換行字元。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\t&lt;/code>&lt;/td>
&lt;td>tab 字元。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\b&lt;/code>&lt;/td>
&lt;td>單字的邊界。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\B&lt;/code>&lt;/td>
&lt;td>非單字的邊界。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;br/>
&lt;p>&lt;code>*&lt;/code> 和 &lt;code>+&lt;/code> 是貪婪的(匹配越多越好)，可以在後方加上 &lt;code>?&lt;/code> 使用非貪婪模式，例如有一個 HTML 字串 &lt;code>&amp;lt;h1&amp;gt;正規表達式&amp;lt;/h1&amp;gt;&lt;/code>：&lt;/p>
&lt;p>&lt;code>&amp;lt;.*&amp;gt;&lt;/code> 會匹配到 &lt;code>&amp;lt;h1&amp;gt;正規表達式&amp;lt;/h1&amp;gt;&lt;/code>；&lt;br />
&lt;code>&amp;lt;.*?&amp;gt;&lt;/code> 會匹配到 &lt;code>&amp;lt;h1&amp;gt;&lt;/code> 和 &lt;code>&amp;lt;/h1&amp;gt;&lt;/code>。&lt;/p>
&lt;br>
&lt;br/>
&lt;p>為了寫這篇文章在查找正規表達式時，發現有一種 Lookahead 和 lookbehind 語法，感覺也很實用。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>符號&lt;/th>
&lt;th>說明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>x(?=y)&lt;/code>&lt;/td>
&lt;td>zero-width positive lookahead assertion，匹配 x，並且後方是 y。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>x(?!y)&lt;/code>&lt;/td>
&lt;td>zero-width negative lookahead assertion，匹配 x，並且後方不是 y。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>例如有一字串 &lt;code>Java JavaScript JavaBeans&lt;/code>：&lt;br />
&lt;code>Java(?=Script)&lt;/code> 會匹配到 &lt;code>JavaScript&lt;/code> 的 &lt;code>Java&lt;/code>；&lt;br />
&lt;code>Java(?!Script)&lt;/code> 會匹配到 &lt;code>Java&lt;/code> 和 &lt;code>JavaBeans&lt;/code> 的 &lt;code>Java&lt;/code>。&lt;/p>
&lt;br/>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>符號&lt;/th>
&lt;th>說明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>(?&amp;lt;=y)x&lt;/code>&lt;/td>
&lt;td>zero-width positive lookbehind assertion，匹配 x，並且前方是 y。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>(?&amp;lt;!y)x&lt;/code>&lt;/td>
&lt;td>zero-width negative lookbehind assertion，匹配 x，並且前方不是 y。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>例如有一字串 &lt;code>Script JavaScript TypeScript&lt;/code>：&lt;br />
&lt;code>(?&amp;lt;=Java)Script&lt;/code> 會匹配到 &lt;code>JavaScript&lt;/code> 的 &lt;code>Script&lt;/code>；&lt;br />
&lt;code>(?&amp;lt;!Java)Script&lt;/code> 會匹配到 &lt;code>Script&lt;/code> 和 &lt;code>TypeScript&lt;/code> 的 &lt;code>Script&lt;/code>。&lt;/p>
&lt;br/>
&lt;br/>
&lt;p>這邊超級推薦一個線上網頁工具，方便我們嘗試正規表達式：&lt;a href="https://regex101.com/" target="_blank" rel="noopener">
regex101
&lt;/a>&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_regex/regex101.jpg" alt="regex101：好用的正規表達式測試網站" data-caption="regex101：好用的正規表達式測試網站" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='850px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:850px;height:;"/>
&lt;figcaption style="text-align: center;">
regex101：好用的正規表達式測試網站
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;h2 id="基本操作">基本操作&lt;/h2>
&lt;p>在 VS Code 內要使用 尋找/取代 功能，可以使用快捷鍵 &lt;code>Ctrl + f&lt;/code> 叫出 尋找/取代 視窗，或從左上角功能列打開 編輯 &amp;gt; 尋找/取代。&lt;/p>
&lt;p>在輸入框可以使用 &lt;code>Ctrl + Enter&lt;/code> 插入換行，在 &amp;quot;尋找&amp;quot; 的輸入框可用上下鍵查看歷史紀錄。&lt;/p>
&lt;p>因為本篇主要說明正規表達式的尋找與取代，因此 &amp;quot;使用正規表達式&amp;quot; 的那顆按鈕要啟用。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_regex/vscode_find.png" alt="VS Code 尋找&amp;amp;取代" data-caption="VS Code 尋找&amp;amp;取代" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='650px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:650px;height:;"/>
&lt;figcaption style="text-align: center;">
VS Code 尋找&amp;amp;取代
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;br/>
&lt;p>題外話：&lt;br />
&lt;a href="https://stackoverflow.com/questions/42179046/what-flavor-of-regex-does-visual-studio-code-use" target="_blank" rel="noopener">
stack overflow 上這篇回答
&lt;/a>提到，VS Code 的正規表達式是使用 JavaScript 的 RegEx engine。&lt;br />
(這邊指的是以上說明的 &amp;quot;尋找/取代 小工具&amp;quot;，左邊文件欄的又不太一樣，不過基本常用的正規表達式語法都是有支援的)&lt;/p>
&lt;br/>
&lt;h2 id="特殊案例">特殊案例&lt;/h2>
&lt;p>以下列出一些較特殊的案例給各位參考。&lt;/p>
&lt;h3 id="多個連續的空白換成一個">多個連續的空白換成一個&lt;/h3>
&lt;p>先來個簡單的，假如要將多個連續空白換成一個空白：&lt;/p>
&lt;p>使用 &lt;code>\s+&lt;/code> 查找，取代成 &lt;code> &lt;/code>：&lt;/p>
&lt;pre>&lt;code>大 家 好 嗎？
// 取代後會變成
大 家 好 嗎？
&lt;/code>&lt;/pre>&lt;br/>
&lt;h3 id="找出-java-而不是-javascript">找出 Java 而不是 Javascript&lt;/h3>
&lt;p>假設有一個句子：&lt;code>difference between Javascript and Java.&lt;/code>&lt;/p>
&lt;p>直接使用 &lt;code>Java&lt;/code> 去搜尋會找到 &lt;code>Javascript&lt;/code> 的 &lt;code>Java&lt;/code> 和 &lt;code>Java&lt;/code>。&lt;br />
但我其實只想要找出 &lt;code>Java&lt;/code> 這個單字。&lt;/p>
&lt;p>這時候就可以使用 &lt;code>\b&lt;/code> (單字的邊界)來尋找：&lt;code>\bJava\b&lt;/code>&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/image/upload/v1686925147/vscode_regex/find_java.jpg" alt="找出 Java 而不是 Javascript" data-caption="找出 Java 而不是 Javascript" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='750px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:750px;height:;"/>
&lt;figcaption style="text-align: center;">
找出 Java 而不是 Javascript
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;h3 id="保留原字串內容-">保留原字串內容 $&lt;/h3>
&lt;p>正規表達式內使用 &lt;code>()&lt;/code> 可以將這部分提取出來，在取代的部分就可以使用 &lt;code>$1&lt;/code> 指第一個字串、&lt;code>$2&lt;/code> 指第二個字串 (&lt;code>$0&lt;/code> 指匹配的全部)。&lt;/p>
&lt;p>舉個例子，我們想把 HTML 語法內的 h2 全部替換為 Markdown 語法的標題(&lt;code>## &lt;/code>)，當然標題的字串要留著。&lt;/p>
&lt;p>使用 &lt;code>&amp;lt;h2&amp;gt;(.+?)&amp;lt;\/h2&amp;gt;&lt;/code> 查找，取代成 &lt;code>## $1&lt;/code>，&lt;br />
因此 &lt;code>&amp;lt;h2&amp;gt;標題一&amp;lt;/h2&amp;gt;&lt;/code> 取代後會變成 &lt;code>## 標題一&lt;/code>。&lt;/p>
&lt;p>* 因為 &lt;code>&amp;lt;/h2&amp;gt;&lt;/code> 內的斜線在正規表達式內是有其他功能，因此想要比對斜線，前方需要加上反斜線 &lt;code>\&lt;/code> 來將其標示為一般字串。&lt;br />
* 在 &lt;code>()&lt;/code> 內還有使用 &lt;code>?&lt;/code> 來使用非貪婪模式，避免如果一行字串出現兩個 &lt;code>&amp;lt;h2&amp;gt;&amp;lt;/h2&amp;gt;&lt;/code> 會有問題。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_regex/keep_orig_content.png" alt="保留原字串內容" data-caption="保留原字串內容" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='650px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:650px;height:;"/>
&lt;figcaption style="text-align: center;">
保留原字串內容
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;h3 id="替換英文大小寫">替換英文大小寫&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>符號&lt;/th>
&lt;th>說明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>\u&lt;/code>&lt;/td>
&lt;td>大寫一個字元。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\l&lt;/code>&lt;/td>
&lt;td>小寫一個字元。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\U&lt;/code>&lt;/td>
&lt;td>大寫匹配組的全部字元。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>\L&lt;/code>&lt;/td>
&lt;td>小寫匹配組的全部字元。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>使用 &lt;code>(hello)(.*)&lt;/code> 查找，取代成 &lt;code>\l$1\U$2&lt;/code>，&lt;br />
因此 &lt;code>Hello world&lt;/code> 取代後會變成 &lt;code>hello WORLD&lt;/code>。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_regex/uppercase_lowercase.jpg" alt="替換英文大小寫" data-caption="替換英文大小寫" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
替換英文大小寫
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;h3 id="將日期-20230701-轉換為-2023年07月01日">將日期 2023/07/01 轉換為 2023年07月01日&lt;/h3>
&lt;p>我們想把日期中間的斜線替換成 &amp;quot;年&amp;quot;、&amp;quot;月&amp;quot;、&amp;quot;日&amp;quot;。&lt;/p>
&lt;p>使用 &lt;code>()&lt;/code> group 將年、月、日的數字抽取出來，再使用 &amp;quot;年&amp;quot;、&amp;quot;月&amp;quot;、&amp;quot;日&amp;quot; 去替換掉。&lt;/p>
&lt;p>使用 &lt;code>(\d{4})\/(\d{2})\/(\d{2})&lt;/code> 查找，取代成 &lt;code>$1年$2月$3日&lt;/code>，&lt;br />
因此 &lt;code>2023/07/01&lt;/code> 取代後會變成 &lt;code>2023年07月01日&lt;/code>。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/image/upload/v1686925147/vscode_regex/replace_date.jpg" alt="將日期 2023/07/01 轉換為 2023年07月01日" data-caption="將日期 2023/07/01 轉換為 2023年07月01日" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
將日期 2023/07/01 轉換為 2023年07月01日
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;h3 id="日期字串補上-0">日期字串補上 0&lt;/h3>
&lt;p>同樣是日期但不同操作，我們想把日期字串 &lt;code>2023/5/1&lt;/code> 補上 0 變成 &lt;code>2023/05/01&lt;/code>，當然他如果原本就是兩位數，則不需要補 0。&lt;/p>
&lt;p>使用 &lt;code>/(\d{1})(?=[\D\n])&lt;/code> 查找，取代成 &lt;code>/0$1&lt;/code>，&lt;br />
因此 &lt;code>2023/5/10&lt;/code> 取代後會變成 &lt;code>2023/05/10&lt;/code>。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/vscode_regex/date_zero.jpg" alt="日期字串補上 0" data-caption="日期字串補上 0" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
日期字串補上 0
&lt;/figcaption>
&lt;/figure>
&lt;h3 id="去除相鄰的重複英文單字">去除相鄰的重複英文單字&lt;/h3>
&lt;p>這個範例是我們想把相鄰的重複英文單字找出來，並取去除掉，只留下一個就好。&lt;/p>
&lt;p>使用 &lt;code>\b(\w+)\s+\1\b&lt;/code> 查找，取代成 &lt;code>$1&lt;/code>，&lt;br />
因此 &lt;code>The the quick brown fox jumps over the lazy dog dog.&lt;/code> 會被替換成 &lt;code>The quick brown fox jumps over the lazy dog.&lt;/code>。&lt;/p>
&lt;p>* &lt;code>\b&lt;/code>：單字的邊界&lt;br />
* &lt;code>(\w+)&lt;/code>：一個英文單字&lt;br />
* &lt;code>\s+&lt;/code>：一個或多個空格&lt;br />
* &lt;code>\1&lt;/code>：重點，匹配與第一組(即前面的 &lt;code>(\w+)&lt;/code>)相同的單詞。&lt;/p>
&lt;br/>
&lt;br/>
&lt;p>後續如果還有遇到比較特別的例子，我還會再補上~&lt;/p>
&lt;br/>
&lt;!--adsense-->
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>本來寫這篇文章前，想說舉幾個特殊用法就好，結果資料查著查著，就不小心把正規表達式(Regular Expression)的用法也整理出來了🤣&lt;br />
算了，剛好也可以給未來的我參考。&lt;/p>
&lt;p>本篇文章所說明的概念，使用 Visual Studio IDE 或其他編輯器也是大同小異。&lt;/p>
&lt;br/>
&lt;p>歡迎追蹤『&lt;a href="https://www.facebook.com/jiatool" target="_blank" rel="noopener">
IT空間
&lt;/a>』FB 粉專，取得最新發文通知🔔&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;p>參考：&lt;br />
&lt;a href="https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Guide/Regular_expressions" target="_blank" rel="noopener">
正規表達式 | MDN Web Docs
&lt;/a>&lt;br />
&lt;a href="https://regex101.com/" target="_blank" rel="noopener">
regex101
&lt;/a>&lt;br />
&lt;a href="https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace" target="_blank" rel="noopener">
VS Code 官方使用尋找取代說明
&lt;/a>&lt;br />
&lt;a href="https://hackmd.io/@aaronlife/regular-expression" target="_blank" rel="noopener">
正規表示式（Regular Expression）| HackMD
&lt;/a>&lt;/p>
&lt;br/>
&lt;blockquote>
&lt;p>你所害怕的事情，從來不會如你想像中的那般嚴重。&lt;br />
你自己在腦海裡所勾勒出來恐懼的影像總是會比實際情況糟的多。&lt;/p>
&lt;p align="right">—— 史賓賽強森&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/vscode_regex.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/vscode_regex_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>正規表達式</category><category>RegularExpression</category><category>Regex</category><category>VSCode</category><category>小技巧</category><category>分享</category></item></channel></rss>