擅长:python、mysql、java
<p>从这里我可以看到正则表达式有几个问题。在<code>re.findall</code>调用中,您使用<code>start_1</code>和<code>end_2</code>就好像它们是变量一样,但是正则表达式实际上只是将它们当作原始字符<code>"start_1"</code>和<code>"end_1"</code>等。要使用正则表达式字符串中的变量,必须使用格式字符串。示例:</p>
<pre><code>r'%s(.*?)%s' % (start_1, end_1)
</code></pre>
<p>另外,当您使用<code>.*end_1</code>时,它将匹配任何字符,因此它将匹配所有<em>字符,直到行上最后出现<code>end_1</code>。<code>LAT #1</code>和<code>LAT #2</code>都以相同的方式结束,因此如果字符串的其他所有内容都是正确的,那么它实际上会匹配“-80[deg],LAT#2 MEAS=-110[de”</p>
<p>此外,在正则表达式中使用方括号时,必须对其进行转义。文字括号用于指定正则表达式中的字符集。你知道吗</p>
<p>下面是一个示例,我假设变量<code>line</code>包含示例字符串<code>"12:34:56.789 78:90:12.123123123 BLAH_BLAH blahblah : LAT #1 MEAS=-80[deg], LAT #2 MEAS=-110[deg] blah_BlHaBKBjFkjsa.c"</code>。您可能需要为整个文件调整此代码段。你知道吗</p>
<pre><code>prefix = r'LAT %s MEAS=(-?\d+)\[deg\]' # includes format string for the variable part of the expression.
p1 = r'#1'
p2 = r'#2
x = re.findall(prefix % p1, line)
y = re.findall(prefix % p2, line)
</code></pre>