Python正则表达式匹配搜索字符串的意外部分

时间:2014-09-13 12:14:13

标签: python regex

我试图使用正则表达式解析页面(Python 2.7; IPython QTConsole)。该页面是从我使用urllib2

抓取的网络目录中提取的.txt
>>> import re
>>> Z = '[A-Z]{2}Z[0-9]{3}.*?\\$\\$'
>>> snippet = re.search(Z, page, re.DOTALL)
>>> snippet = snippet.group() # Only including the first part for brevity.
'PZZ570-122200-\nPOINT ARENA TO POINT REYES 10 TO 60 NM OFFSHORE-\n249 AM PDT FRI SEP 12 2014\n.TODAY...SW WINDS 5 KT. WIND WAVES 2 FT OR LESS.\nNW SWELL 3 TO 5 FT AT 12 SECONDS. PATCHY FOG IN THE MORNING.\n.TONIGHT...W WINDS 10 KT. WIND WAVES 2 FT OR LESS.'

我想搜索换行符后跟一段时间。我想得到第一次和第二次出现如下。目标是在第一个和第二个(和后续的)\n\.分隔符之间解析信息。我知道我可以做一些环顾四周的事情,但我在前瞻性方面遇到了贪婪。此外,我无法弄清楚为什么以下不起作用。

>>> pat = r"\n\."
>>> s = re.search(pat, snippet.group(), re.DOTALL)
>>> e = re.search(pat, snippet.group()[s.end():], re.DOTALL)

上面的s有效,但我得到e的奇怪结果。

>>> [s.group(), s.start(), e.group(), e.end()]
['\n.', 90, '\n.', 110]

>>> snippet.group()[s.start():e.end()]
'\n.TODAY...SW WINDS 5'

>>> snippet.group()[e.start():e.end()]
' 5'

我想snippet.group()中有哪些格式隐藏了?如果是这种情况,那么奇怪的是,某些新行是明确的,好像snippet.group()是原始的,而其他的则是隐藏的。为什么e.group()snippet.group()[e.start():e.end()]不同?

如果这个问题已经解决,我道歉。我找不到任何相关的东西。

非常感谢。

1 个答案:

答案 0 :(得分:2)

要在python中拆分字符串,可能更容易使用str.split()re.split()

e.g:

"1\n.2\n.3".split("\n.")