【问题标题】:Create dictionary from successful regex matches in python从 python 中成功的正则表达式匹配创建字典
【发布时间】:2017-01-20 23:00:57
【问题描述】:

我对正则表达式很陌生。我正在尝试逐行读取日志文件。并尝试找到如下所示的模式,它们可以在线上的任何位置,而不仅仅是开始。

18514&email=dkekrf@yahoo.com"qwqw  (need to extract only email=dkekrf@yahoo.com)
"emailTo":"lolllll@gmail.com"
pseId="12121212ffsd"

如何使用 re.search 一起搜索所有三种模式?

【问题讨论】:

  • 您的标题与您的最后一个问题不符...您能更具体地说明您的输入和预期输出吗?

标签: python regex


【解决方案1】:

这里有一个解决方案。我希望,它会提取您想要的电子邮件地址。

我无法创建更准确的正则表达式,因为您没有提供有关日志文件的更多信息。我也不确定,如果我理解你的问题是正确的。

import re

for line in open('filename', 'r'):
    firstPattern = re.search(r'email=(.*?)"', line)
    secondPattern = re.search(r'"emailTo":"(.*?)"', line)
    thirdPattern = re.search(r'pseId="(.*?)"', line)

    if firstPattern:
        print(firstPattern.group(1))
    elif secondPattern:
        print(secondPattern.group(1))
    elif thirdPattern:
        print(thirdPattern.group(1))

【讨论】:

  • 我正在尝试逐行读取日志文件。并且有三种类型的模式:18514&email=dkekrf@yahoo.com(只需要提取email=dkekrf@yahoo.com)“emailTo ":"lollllll@gmail.com" pseId="12121212ffsd"
  • 两种模式适用于第一种模式:firstPattern = re.search(r'email=(.*?)\s', line) 模式应以“ 示例:18514&email=dkekrf @yahoo.com"qwqw (只需要提取 email=dkekrf@yahoo.com) 应该只匹配:dkekrf@yahoo.com 当前匹配:dkekrf@yahoo.com"iqwqwqw
  • 现在第一个模式应该匹配你的字符串。
猜你喜欢
  • 2012-06-21
  • 2017-02-19
  • 2012-12-27
  • 1970-01-01
  • 2018-07-15
  • 2016-11-22
  • 2016-06-01
  • 1970-01-01
  • 2020-05-03
相关资源
最近更新 更多