V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aheadlead
V2EX  ›  程序员

[py] 这正则为啥匹配失败? re.match(': (?P<to>\d+) ms', 'v2: 10000 ms')

  •  
  •   aheadlead · 2017-07-15 14:13:36 +08:00 · 2291 次点击
    这是一个创建于 2687 天前的主题,其中的信息可能已经有所发展或是发生改变。

    写了这么多年 python 了,今天遇到一个不太明白的问题。

    问题就如标题(为了简短期间,标题里面稍作改动)。

    这样死活匹配不出来:

    >>> r = re.match(': (?P<timeout>\d+) ms', 'Screen off timeout: 10000 ms')
    >>> r
    >>> print(r)
    None
    

    改成这样就好了:

    >>> r = re.match('Screen off timeout: (?P<timeout>\d+) ms', 'Screen off timeout: 10000 ms')
    >>> r
    <_sre.SRE_Match object; span=(0, 28), match='Screen off timeout: 10000 ms'>
    

    求大虾指点其原理?在线跪等

    4 条回复    2017-07-15 14:37:41 +08:00
    hugo775128583
        1
    hugo775128583  
       2017-07-15 14:17:24 +08:00 via Android   ❤️ 1
    match 是从头开始匹配。
    请用 search
    aheadlead
        2
    aheadlead  
    OP
       2017-07-15 14:29:20 +08:00
    @hugo775128583 学习了 谢谢
    aheadlead
        3
    aheadlead  
    OP
       2017-07-15 14:33:09 +08:00
    @hugo775128583
    没想到这么多年我都是瞎用的,没好好看文档。 [面壁思过]

    请教大虾,能否这样理解:
    re.match(pattern, string) 等于 re.search('^' + patttern, string)
    ipwx
        4
    ipwx  
       2017-07-15 14:37:41 +08:00   ❤️ 1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3263 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:40 · PVG 18:40 · LAX 02:40 · JFK 05:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.