首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式时间、日期、id

正则表达式时间、日期、id
EN

Stack Overflow用户
提问于 2020-04-15 01:52:53
回答 8查看 1.8K关注 0票数 0

我们使用相同的syslog,并且我们希望显示方括号中的日期、时间和进程id。我们可以读取syslog的每一行,并将内容传递给show_time_of_pid函数。

代码语言:javascript
运行
复制
import re

def show_time_of_pid(line):


    pattern=r"^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec).*\d{2}:\d{2}:\d{2}\[(\d+)\]"
    result = re.search(pattern, line)

    return result

这一点:

代码语言:javascript
运行
复制
print(show_time_of_pid("Jul 6 14:01:23 computer.name CRON[29440]: USER (good_user)"))

应打印:

代码语言:javascript
运行
复制
Jul 6 14:01:23 pid:29440

我们在show_time_of_pid实现中遗漏了什么?

EN

回答 8

Stack Overflow用户

发布于 2020-04-15 02:35:23

您的代码中有几个问题:

  • []应该在正则表达式模式中进行转义,因为它们是特殊符号(表示一组characters).
  • You没有使用组表示日期和时间,因此您以后将无法从结果中获取它们。
  • 您没有尝试从搜索结果中获取这些组(实际上有一个用于月份和pid的组)。您刚刚尝试打印搜索结果对象。

我推荐阅读关于[]和groups的docs。此外,HOWTO在一年中的这个时候也很棒。

下面是一个有效的示例:

代码语言:javascript
运行
复制
import re

def show_time_of_pid(line):
  pattern=r"^(?P<date_time>(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d{,2}\s+\d{2}:\d{2}:\d{2}).*\[(?P<pid>\d+)\]"
  re_result = re.search(pattern, line)

  result = f"{re_result.group('date_time')} pid:{re_result.group('pid')}"

  return result

print(show_time_of_pid("Jul 6 14:01:23 computer.name CRON[29440]: USER (good_user)"))

输出:

代码语言:javascript
运行
复制
Jul 6 14:01:23 pid:29440
票数 0
EN

Stack Overflow用户

发布于 2020-07-05 12:10:54

简单解决方案

代码语言:javascript
运行
复制
def show_time_of_pid(line):

    date_pattern = r'\w+ \d (\d:?)+'
    date_result = re.search(date_pattern, line)

    pid_pattern = r'\[(\d+)\]'
    pid_result = re.search(pid_pattern, line)

    if date_result == None or pid_result == None :
        return "None"

    return '{} pid:{}'.format(date_result[0], pid_result[1])
票数 0
EN

Stack Overflow用户

发布于 2020-08-18 02:03:26

代码语言:javascript
运行
复制
^(\w+)([\d: ]+).*(\d{2}:\d{2}:\d{2}).*\[(\d+)\]

我做了4组,第一组代表月份,第二组代表日期,第三组代表时间,第四组代表pid。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61214063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档