擅长:python、mysql、java
<p>我们需要使用<code>re.finditer</code>获取<code>re.Match</code>对象,而不是字符串本身,这将允许获取有关起始位置的信息。考虑下面的例子:假设我想找到紧跟在新行之前和之后的每两个数字(^ {< CD3>}),然后:</p>
<pre><code>import re
lineList = ["123","456","789","ABC","XYZ"]
text = '\n'.join(lineList)
for match in re.finditer(r"\d\n\d", text, re.MULTILINE):
start = match.span()[0] # .span() gives tuple (start, end)
line_no = text[:start].count("\n")
print(line_no)
</code></pre>
<p>输出:</p>
<pre><code>0
1
</code></pre>
<p>说明:在我获得起始位置后,我只需计算该位置之前的换行数,这与获得行数相同。注意:我假设行号从<code>0</code>开始</p>