首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python中的正则表达式获取字符串的一部分

使用Python中的正则表达式获取字符串的一部分
EN

Stack Overflow用户
提问于 2014-11-28 14:35:03
回答 2查看 51关注 0票数 2

我正在处理需要在Python中转换为日期的字符串。在正常情况下,我的字符串会有%d/%m/%Y %H:%M:%S。例如:18/02/2013 09:21:14

但是,在某些情况下,我可以获得类似于%d/%m/%Y %H:%M:%S:%ms的东西,例如:06/01/2014 09:52:14:78

我想摆脱那个ms位,但我需要弄清楚怎么做。我已经能够创建一个正则表达式,它可以测试日期是否匹配:

代码语言:javascript
运行
复制
    mydate = re.compile("^((((31\/(0?[13578]|1[02]))|((29|30)\/(0?[1,3-9]|1[0-2])))\/(1[6-9]|[2-9]\d)?\d{2})|(29\/0?2\/(((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))|(0?[1-9]|1\d|2[0-8])\/((0?[1-9])|(1[0-2]))\/((1[6-9]|[2-9]\d)?\d{2})) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$")
    s = "06/01/2014 09:52:14:78"
    bool(mydate.match(s))

>>> False

但是我不知道如何才能得到有趣的部分,即06/01/2014 09:52:14有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-28 14:38:00

您可以使用正向后视re.sub()

代码语言:javascript
运行
复制
>>> re.sub(r'(?<=\d{2}:\d{2}:\d{2}).*','','06/01/2014 09:52:14:78')
'06/01/2014 09:52:14'

Debuggex Demo

票数 2
EN

Stack Overflow用户

发布于 2014-11-28 14:38:20

re.sub函数怎么样?

代码语言:javascript
运行
复制
>>> re.sub(r'( \d{2}(:\d{2}){2}).*$',r'\1','06/01/2014 09:52:14:78')
'06/01/2014 09:52:14'
>>> re.sub(r'( \d{2}(:\d{2}){2}).*$,r'\1','8/02/2013 09:21:14')
'8/02/2013 09:21:14'
  • ( \d{2}(:\d{2}){2}) matches小时数:min:秒保存在捕获组1中
  • .*$匹配毫秒
  • r'\1'替换为第一个caputre组的内容
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27190911

复制
相关文章

相似问题

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