我正在尝试使用正则表达式来解析这样的文本:
'''ErrorID: 951574305
Time: Mon Apr 25 16:01:34 CEST 2011
URL: /documents.do
HttpCode: null
Error: class java.lang.NullPointerException: null'''
关键字错误ID:,时间:,网址:始终相同,我需要搜索它们。我该如何解析这个文本?
答案 0 :(得分:1)
import re
re.findall("ErrorID:\s+(.*)", text)
# ['951574305']
re.findall("Time:\s+(.*)", text)
# ['Mon Apr 25 16:01:34 CEST 2011']
re.findall("URL:\s+(.*)", text)
# ['/documents.do']
正则表达式以这种方式工作:它匹配ErrorID:
(或其他分隔符)加上一些空格,加上字符串的其余部分,直到字符串的换行符/结尾。然后它返回空格后面的“东西”。此外,结果将是您需要第一个项目的列表。
可以有其他策略来找到你需要的东西,但我发现这是最合适的。
答案 1 :(得分:0)
答案 2 :(得分:0)
如果你在字符串中需要所有这些并且不知道它们在哪里并且可以使用先行断言:
(?=[\S\s]*ErrorID:)(?=[\S\s]*Time:)(?=[\S\s]*URL:)
答案 3 :(得分:0)
如果您的实现支持命名组...
/ErrorID:\s+(?<ID>.*)\nTime:\s+(?<Time>.*)\nURL:\s+(?<URL>.*)/g
然后您可以按名称引用它们。见http://refiddle.com/10w
否则按索引
/ErrorID:\s+(.*)\nTime:\s+(.*)\nURL:\s+(.*)/g
ID为1美元,Time为2美元,URL为3美元。 http://refiddle.com/10x