dream7758522
V2EX  ›  问与答

正则求助一下

  •  
  •   dream7758522 · Jun 24, 2017 via Android · 1841 views
    This topic created in 3277 days ago, the information mentioned may be changed or developed.
    {a:123aaa111}{b:456aaa111}{c:789aaa111}{d:012aaa111}
    想提取中括号中得第一组数字,
    用正則
    {.*?\d+
    匹配出的是
    {a:123
    {b:456
    {c:789
    各位朋友能指导一下吗
    9 replies    2017-06-25 07:23:34 +08:00
    vmebeh
        1
    vmebeh  
       Jun 24, 2017 via iPhone
    {.*?(\d+)
    dream7758522
        2
    dream7758522  
    OP
       Jun 24, 2017 via Android
    @vmebeh 一样,没匹配出来
    vmebeh
        3
    vmebeh  
       Jun 24, 2017 via iPhone   ❤️ 1
    匹配到之后需要再多一部取出括号内的匹配
    如 Python
    re.search(r'\{.*?(\d+)', '{a:123aaa111}{b:456aaa111}{c:789aaa111}{d:012aaa111}').group(0)={a:123
    group(1)=123
    group(2)={b:456}
    group(3)=456
    ...

    其他语言不清楚
    gogohigh
        4
    gogohigh  
       Jun 24, 2017   ❤️ 1
    前缀长度能确定的话可以用环视,不能确定的话就只能分组捕获了
    比如.*?(\d+)
    输出 group1
    cxbig
        5
    cxbig  
       Jun 24, 2017   ❤️ 1
    也不说用什么语言。。。
    通常都是加括号来取对应内容
    ethanlu
        6
    ethanlu  
       Jun 24, 2017   ❤️ 1
    (\d{3})(?=aaa) 好了,http://regexr.com/3g7qq
    songz
        7
    songz  
       Jun 25, 2017
    /\d{3}(?=\w{3})/g
    hzcxdgioa
        8
    hzcxdgioa  
       Jun 25, 2017 via Android
    (?<=:)(\d*)
    hzcxdgioa
        9
    hzcxdgioa  
       Jun 25, 2017 via Android
    (?<=:)(\d+)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5369 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 03:49 · PVG 11:49 · LAX 20:49 · JFK 23:49
    ♥ Do have faith in what you're doing.