northisland

来吧,各位正则达人们,来做道题帮我进步

  •  
  •   northisland · Dec 29, 2015 · 2744 views
    This topic created in 3811 days ago, the information mentioned may be changed or developed.

    楼主的正则扔了好久不弄已经捡不起来了,只是记得貌似用正则表达式可以表示任意字符串,以便查找 /替换 /删除所需要的目标。

    那么我现在有这样的一个字符串:
    addr: "24330208"

    我想把冒号前后(不包含空格和引号)的两项提取出来,用正则应该怎么弄呢?
    语言不限。

    我用 python 写
    m=re.search('[ ]*( \ w * ) : [ \"] *( \ s * ) [ \"] *', ' addr: "24330208"')
    m.group()
    请问问题在哪里?

    谢了

    9 replies    2015-12-29 17:34:39 +08:00
    whosesmile
        1
    whosesmile  
       Dec 29, 2015   ❤️ 1
    1.这么简单的东西为什么要用正则? string.split 不行吗?
    2.好吧,还是写个给你(js):/(addr):\s*\"(\d+)\"/.exec('addr: "24330208"')
    feiyuanqiu
        2
    feiyuanqiu  
       Dec 29, 2015   ❤️ 1
    var s = 'addr: "24330208"', r = /(\w+):\s*"(\w+)"/;
    s.match(r);
    northisland
        3
    northisland  
    OP
       Dec 29, 2015
    其实前后两段,空格数量,有无引号是不一定的

    m=re.search('(.*):(.*)', ' addr: "24330208"')
    if m:
    print m.group(1).replace('"','').strip(), group(2).replace('"','').strip()
    是可行的
    但是我想看看有没有不把结果去引号、空格的做法
    zwhu
        4
    zwhu  
       Dec 29, 2015   ❤️ 1
    /(\w+):\s*(?:(?:"(.+?)")|(.+))/

    这样应该能满足
    sennes
        5
    sennes  
       Dec 29, 2015   ❤️ 2
    http://regexper.com/
    把正则丢进去图示一下,就知道怎么修改和补充条件了。
    gimp
        6
    gimp  
       Dec 29, 2015   ❤️ 1
    hqs123
        7
    hqs123  
       Dec 29, 2015   ❤️ 1
    不懂,但来学习下...
    chemzqm
        8
    chemzqm  
       Dec 29, 2015   ❤️ 1
    vim:
    let list= matchlist('addr: "343423"', '\v^(\w+)\s*:\s*"(.*)"')
    echo list[1]
    echo list[2]

    javascript
    var ms = 'addr: "424344"'.match(/^(\w+)\s*:\s*"(.*)"/)
    console.log(ms[1])
    console.log(ms[2])

    python
    import re
    m = re.search('^(\w+)\s*:\s*"(.*)"','abbr: "42414"')
    m.group(1)
    m.group(2)

    贪婪匹配版本
    DejaVud
        9
    DejaVud  
       Dec 29, 2015   ❤️ 1
    楼主问了他写的正则问题在哪,所以我来试回答下
    1.用 raw string, r"[]*(\w*):[\"]*(\s*)[\"]*",否则'\'会导致转置
    2.\s 不是用来匹配数字
    再试试
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2708 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 84ms · UTC 15:18 · PVG 23:18 · LAX 08:18 · JFK 11:18
    ♥ Do have faith in what you're doing.