擅长:python、mysql、java
<p>您可以通过使备选方案仅在字符串中的不同位置匹配来改进您的模式</p>
<p>使用</p>
<pre><code>rx = re.compile(r'_D-(?:1[01]_hot56|0(?:[89]_hot56|[1-7]_hot(?:43|50)))')
# .... Read the file line by line ...
if not rx.search(line):
# Ok, process
</code></pre>
<p>参见<a href="https://regex101.com/r/7kGuC3/3" rel="nofollow noreferrer">regex demo</a></p>
<p><strong>图案细节</strong>:</p>
<ul>
<li><code>_D-</code>-文字子串</li>
<li><code>(?:</code>-非捕获组的开始(与捕获组不同,没有为组创建内存缓冲区)匹配:
<ul>
<li><code>1[01]_hot56</code>-<code>1</code>,然后<code>0</code>或<code>1</code>,然后<code>_hot56</code></li>
<li><code>|</code>-或</li>
<li><code>0</code>-a<code>0</code>字符,然后</li>
<li><code>(?:</code>-第二个非捕获组
<ul>
<li><code>[89]_hot56</code>-<code>8</code>或<code>9</code>然后<code>_hot56</code></li>
<li><code>|</code>或</li>
<li><code>[1-7]_hot(?:43|50)</code>—从<code>1</code>到<code>7</code>的数字,然后是<code>_hot</code>,然后是<code>43</code>或<code>50</code></li>
</ul></li>
<li><code>)</code>-第二个非捕获组的结尾</li>
</ul></li>
<li><code>)</code>-第一个非捕获组的结尾</li>
</ul>