

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Regular Expression &#8211; Max的程式語言筆記</title>
	<atom:link href="https://stackoverflow.max-everyday.com/tag/regular-expression/feed/" rel="self" type="application/rss+xml" />
	<link>https://stackoverflow.max-everyday.com</link>
	<description>我要當一個豬頭，快樂過每一天</description>
	<lastBuildDate>Wed, 22 Oct 2025 17:26:07 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://stackoverflow.max-everyday.com/wp-content/uploads/2017/02/max-stackoverflow-256.png</url>
	<title>Regular Expression &#8211; Max的程式語言筆記</title>
	<link>https://stackoverflow.max-everyday.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Sublime Text 的「尋找」的正規表達式預設是不比對換行符號</title>
		<link>https://stackoverflow.max-everyday.com/2025/10/sublime-text-return-line-regex/</link>
					<comments>https://stackoverflow.max-everyday.com/2025/10/sublime-text-return-line-regex/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Wed, 22 Oct 2025 17:26:05 +0000</pubDate>
				<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[Regular Expression]]></category>
		<category><![CDATA[sublime]]></category>
		<guid isPermaLink="false">https://stackoverflow.max-everyday.com/?p=7164</guid>

					<description><![CDATA[透過 sublime 想移除某一個 html 的...]]></description>
										<content:encoded><![CDATA[
<p>透過 sublime 想移除某一個 html 的 tag, 直接使用 &lt;tab .*/tag>在沒有遇到換行符號都沒問題,  但有換行時就無法選取到換行後的內容。</p>



<p>解法是把 <code>.*</code> 換成 <code>([\s\S]*?)</code></p>



<p>原始的 html:</p>



<pre class="wp-block-code"><code>&lt;div id="byline-container" class="style-scope ytd-playlist-panel-video-renderer">
&lt;span id="byline" class="style-scope ytd-playlist-panel-video-renderer">
Hgfdoi
&lt;/span>
&lt;/div></code></pre>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="127" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2025/10/2025-10-23_01-17_cf-1024x127.jpg?v=1761153810" alt="" class="wp-image-7166" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2025/10/2025-10-23_01-17_cf-1024x127.jpg?v=1761153810 1024w, https://stackoverflow.max-everyday.com/wp-content/uploads/2025/10/2025-10-23_01-17_cf-600x74.jpg?v=1761153810 600w, https://stackoverflow.max-everyday.com/wp-content/uploads/2025/10/2025-10-23_01-17_cf-768x95.jpg?v=1761153810 768w, https://stackoverflow.max-everyday.com/wp-content/uploads/2025/10/2025-10-23_01-17_cf.jpg?v=1761153810 1416w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>在 Sublime Text 的「尋找」(Ctrl+F 或 Cmd+F) 或「在檔案中尋找」(Ctrl+Shift+F 或 Cmd+Shift+F) 面板中，正規表達式預設是<strong>不比對換行符號</strong>的。</p>



<p>要解決這個問題，您需要做兩件事：</p>



<ol start="1" class="wp-block-list">
<li><strong>啟用「點號比對新行」（Dot Matches Newline）模式</strong>：在 Sublime Text 的尋找面板中，這通常對應於一個特殊的模式修飾符或一個按鈕。</li>



<li><strong>調整您的正規表達式</strong>：確保它能處理換行。</li>
</ol>



<h3 class="wp-block-heading">解決方案</h3>



<h4 class="wp-block-heading">1. 使用模式修飾符（推薦）</h4>



<p>在 Sublime Text 的正規表達式引擎（預設是基於 Boost 的 PCRE）中，您可以在表達式的<strong>開頭</strong>添加 <code>(?s)</code> 修飾符來啟用「點號比對新行」（<code>s</code> 代表 <strong>single-line mode</strong> 或 <strong>dot-all</strong>）。</p>



<p><strong>修改後的正規表達式：</strong></p>



<p>程式碼片段</p>



<pre class="wp-block-code"><code>(?s)&lt;span id="byline" (.*?)&lt;/span&gt;
</code></pre>



<p><strong>解釋：</strong></p>



<ul class="wp-block-list">
<li><code>(?s)</code>: 啟用單行模式。在這個模式下，點號 (<code>.</code>) 會比對包括換行符號在內的任何字元。</li>



<li><code>&lt;span id="byline" </code>: 比對起始部分。</li>



<li><code>(.*?)</code>: <strong>非貪婪</strong>地擷取中間的所有內容，包括屬性和標籤內的文字。
<ul class="wp-block-list">
<li><code>*?</code> 確保它只比對到最近的 <code>&lt;/span></code> 標籤。</li>
</ul>
</li>



<li><code>&lt;/span></code>: 比對結束標籤。</li>
</ul>



<h4 class="wp-block-heading">2. 使用專門比對任何字元的表達式（替代方案）</h4>



<p>如果您不想使用 <code>(?s)</code> 修飾符，您可以將 <code>.</code> 替換為能夠比對任何字元組合的模式，例如：</p>



<p>程式碼片段</p>



<pre class="wp-block-code"><code>&lt;span id="byline" (&#91;\s\S]*?)&lt;/span&gt;
</code></pre>



<p><strong>解釋：</strong></p>



<ul class="wp-block-list">
<li><code>[\s\S]</code>: 這是一個字元集，它比對：
<ul class="wp-block-list">
<li><code>\s</code>: 任何空白字元（包括空格、製表符、<strong>換行符號</strong>）。</li>



<li><code>\S</code>: 任何非空白字元。</li>



<li>結合起來，它比對<strong>所有</strong>字元。</li>
</ul>
</li>



<li><code>[\s\S]*?</code>: <strong>非貪婪</strong>地比對所有內容。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 額外的建議 (針對您的 HTML 結構)：</strong></p>



<p>如果您只需要擷取 <code>&lt;span&gt;</code> 標籤<strong>內部的文字</strong>，您的原始 HTML 結構是：</p>



<p>HTML</p>



<pre class="wp-block-code"><code>&lt;span id="byline" class="style-scope ytd-playlist-panel-video-renderer"&gt;
    Hgfdoi
&lt;/span&gt;
</code></pre>



<p>如果您使用 <code>(?s)&lt;span id="byline" (.*?)&lt;/span&gt;</code>，它會擷取到：</p>



<ol start="1" class="wp-block-list">
<li><code>class="style-scope ytd-playlist-panel-video-renderer"</code></li>



<li><code>></code></li>



<li><code>\n</code>（換行符號）</li>



<li><code>Hgfdoi</code></li>



<li><code>\n</code>（換行符號）</li>
</ol>



<p>如果您只想提取 <code>Hgfdoi</code>，並且處理所有屬性和空白字元，更精確的表達式是：</p>



<p>程式碼片段</p>



<pre class="wp-block-code"><code>(?s)&lt;span id="byline".*?&gt;(.*?)&lt;/span&gt;
</code></pre>



<ul class="wp-block-list">
<li><code>(?s)</code>: 開啟比對換行。</li>



<li><code>&lt;span id="byline"</code>: 比對起始。</li>



<li><code>.*?</code>: 非貪婪地比對所有屬性直到 <code>></code> 符號。</li>



<li><code>></code>: 比對起始標籤的結束符號。</li>



<li><code>(.*?)</code>: <strong>擷取群組</strong>，擷取您想要的文字（<code>Hgfdoi</code> 和周圍的空白換行）。</li>



<li><code>&lt;/span></code>: 比對結束標籤。</li>
</ul>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2025/10/sublime-text-return-line-regex/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Python 的檔名 Pattern</title>
		<link>https://stackoverflow.max-everyday.com/2017/02/python-filename-pattern/</link>
					<comments>https://stackoverflow.max-everyday.com/2017/02/python-filename-pattern/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Wed, 08 Feb 2017 16:27:07 +0000</pubDate>
				<category><![CDATA[Dropboxlike開發筆記]]></category>
		<category><![CDATA[Python筆記]]></category>
		<category><![CDATA[Dropboxlike]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Regular Expression]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=118</guid>

					<description><![CDATA[難免會有需要處理輸入的參數，要符合某種的 pat...]]></description>
										<content:encoded><![CDATA[<p>難免會有需要處理輸入的參數，要符合某種的 pattern, 在 呼叫 dropbox 的 create_folder API 傳回的訊息是：</p>
<h4 data-reactid=".0.2.1.0.0.0.1.0.0.0.0.0">Error: <span class="hljs-number">400</span></h4>
<p><code data-reactid=".0.2.1.0.0.0.1.0.0.0.0.1">Error in call to API function <span class="hljs-string">"files/create_folder"</span>: request body: path: 'abc' did not match pattern '(/(.|[\r\n])*)|(ns:[<span class="hljs-number">0</span>-<span class="hljs-number">9</span>]+(/.*)?)'</code></p>
<hr />
<p>說明：</p>
<p>path 參數要用符號 /開頭</p>
<p>程式寫法：</p>
<pre>import re
pattern = r'(/(.|[\r\n])*)|(ns:[0-9]+(/.*)?)'
match_object = re.match(pattern, path)
if not match_object:
    errorMessage = "path: '%s' did not match pattern." % (path)
</pre>
<p>&nbsp;</p>
<hr />
<p>第2個範例：</p>
<p>假設有一個檔案名稱為「2014-10-04 12.49.44.jpg」，我們可以使用下面的正規表達式從檔名取得時間資訊：</p>
<pre>from datetime import datetime

#取得圖片建立時間
def get_time(filename):

    #針對 Dropbox 的 Camera Uploads
    pattern = r'\d{4}-\d{2}-\d{2} \d{2}\.\d{2}\.\d{2}'
    match_object = re.match(pattern, filename)
    if match_object:
        timestring = match_object.group(0)
        return datetime.strptime(timestring, '%Y-%m-%d %H.%M.%S')
</pre>
<hr />
<p>&nbsp;</p>
<h4>相關文章：</h4>
<p>使用 Python 的生活日常系列 [1] &#8211; 圖片整理<br />
<a href="http://marco79423.twbbs.org/articles/%E4%BD%BF%E7%94%A8-python-%E7%9A%84%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8%E7%B3%BB%E5%88%97-1-%E5%9C%96%E7%89%87%E6%95%B4%E7%90%86/">http://marco79423.twbbs.org/articles/%E4%BD%BF%E7%94%A8-python-%E7%9A%84%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8%E7%B3%BB%E5%88%97-1-%E5%9C%96%E7%89%87%E6%95%B4%E7%90%86/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2017/02/python-filename-pattern/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
