如何使用re跳过一个单词

时间:2014-07-19 23:28:44

标签: python regex

我试图从文本文件中提取一些“单词” 部分文件是:

Predicted XXX Area (NM): 88,0644
A    37 2.61 N,  1 12.75 W


XXX Track Vertices: 
 37 3.99 N,  1 13.02 W

感兴趣的线

\tA\t37 2.61 N,  1 12.75 W
\t37 3.99 N,  1 13.02 W

我应用以下模式

pat = re.compile(r'\s\s[1-9]?[0-9]\s[0-9]\.[0-9]{2}\s[NS],.+')
matcher = re.search(pat,text)

溶胶:

37 2.61 N,  1 12.75 W

如何使用正则表达式跳过第一行并按如下方式捕获第二行?

37 3.99N, 1 13.02W

由于

2 个答案:

答案 0 :(得分:1)

取消您提供的数据:您可以在多行模式下使用字符串^锚点的开头。

>>> import re
>>> s = '''Predicted XXX Area (NM): 88,0644
    A   37 2.61 N,  1 12.75 W


XXX Track Vertices: 
    37 3.99 N,  1 13.02 W'''
>>> p = re.compile(r'^\s+([1-9]?[0-9]\s[0-9]\.[0-9]{2}\s[NS],.+)', re.M)
>>> re.search(p, s).group(1)
'37 3.99 N,  1 13.02 W'

答案 1 :(得分:1)

如果您要查找以空格和数字开头的行:

pat = re.compile(r'^\s+[1-9]?[0-9]\s[0-9]\.[0-9]{2}\s[NS],.+')
                   ^^^^

^匹配行首。 \s+用于一个或多个空格。

您不能总是相信空白的一致性,尤其是:

  1. 在这种情况下,当您在感兴趣的行中指定\t

  2. 在某些情况下,生成源数据时,可以用空格填充较短的数字,较长的数字会减少空格以使输出看起来均匀。