擅长:python、mysql、java
<p>首先,您的正则表达式<code>r'((((2)([0-3]))|(([0-1])([0-9])))([0-5])([0-9]))'</code>中有大量的括号。你知道吗</p>
<p>可能您没有使用这样创建的捕获组。您似乎想要匹配HHMM,其中HH是00到23,MM是00到59。你知道吗</p>
<p><code>r'(2[0-3]|[01][0-9])[0-5][0-9]</code>将做同样的工作。您可以通过执行<code>r'(?:2[0-3]|[01][0-9])[0-5][0-9]'</code>来避免剩下的一个捕获组。你知道吗</p>
<p>您可能希望通过(例如)在模式的每一端具有<code>\b</code>来避免虚假匹配(例如,“blah 23456789”中的“2345”)。你知道吗</p>
<p>以下是代码的替换:</p>
<pre><code>import re
searcher = re.compile(r'\b(?:2[0-3]|[01][0-9])[0-5][0-9]\b').search
with open(filename) as text:
for line in text:
m = searcher(line)
if m:
do_something_1(line, m)
if line.startswith("BREAK"): # equivalent to your code; is that what you really mean??
break
for line in text:
m = searcher(line)
if m:
do_something_2(line, m)
if line.startswith("STOP"): # equivalent to your code; is that what you really mean??
break
</code></pre>