2
我想使用正则表达式(Python 2.7; IPython QTConsole)解析页面。该网页是从Web目录拉到一个.txt,我使用urllib2
Python正则表达式在搜索字符串的意外部分匹配
>>> 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()]
有所不同?
如果这个问题已经解决,我很抱歉。我找不到任何相关的东西。
非常感谢。
你可能有更多的运气're.split()'你的既定目标 – Aprillion 2014-09-13 12:25:27
这工作就像一个魅力。非常感谢。我仍然对上面的行为感到好奇。 – rlantz 2014-09-13 12:33:26
不知道,将不得不花费大量的时间调试:( – Aprillion 2014-09-13 12:40:57