在字符串中查找时间戳

时间:2014-07-15 17:15:21

标签: python notepad++

我正在Notepad ++中编写一个时间表python脚本来优化我的工作流程。我的数据安排如下:

2014-07-16_B_019 John Smith -Left(7:00pm)

2014-07-16_B_089 Jack Smith -Late(8:00pm)

我希望只为时间戳创建一个新字符串(例如晚上7点和晚上8点)。我确实使用了很长时间:

endNum = editor.getLineEndPosition(editor.lineFromPosition(editor.getCurrentPos())+1) #get position of line final character

stringMe = editor.getTextRange(endNum-7,endNum-1) #Convention must be met!

但对选择范围进行硬编码是不好的做法,如果我说--Left(上午11点)将会破坏

2 个答案:

答案 0 :(得分:1)

正则表达式可能是提取此信息的最简单方法

import re
title = "2014-07-16_B_019 John Smith -Left(7:00pm)"
matches = re.search(r"""(\d{4}-  #the year
                         \d{2}-  #the month
                         \d{2})  #the day
                         .*      #anything
                         (\d{1,2}:\d{2})   #Hour:Minute
                         (am|pm)  #am or pm""",title,re.X)
print matches.groups()

答案 1 :(得分:1)

Python Script支持一些正则表达式;您可以使用editor.research查找指定模式的匹配位置。要找到你想要的东西,你可以尝试例如。

r"\((\d{1,2}(?:[:.]\d{1,2})?(?:am|pm)?)\)$"

Demo and explanation at Regex101