V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhuzhuaini
V2EX  ›  正则表达式

正则提问

  •  
  •   zhuzhuaini · 2019-11-16 14:30:49 +08:00 · 2876 次点击
    这是一个创建于 1832 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有这样一个字符串:
    {'JSESSIONID': '29rshpmaj'}
    我想匹配除了{}'以外的字符,即:
    JSESSIONID:29rshpmaj
    目前使用了这样一个正则 [^{}'] 能匹配出除了这三个特殊字符以外的内容,但是匹配数量太多了,我想有没有一条表达式只出一个结果,内容为 JSESSIONID:29rshpmaj
    14 条回复    2019-11-16 18:01:39 +08:00
    iNaru
        1
    iNaru  
       2019-11-16 14:53:08 +08:00
    (?<={)[^{]+(?=})
    zhuzhuaini
        2
    zhuzhuaini  
    OP
       2019-11-16 15:51:02 +08:00
    @iNaru 不对哦 这样的匹配结果是:'JSESSIONID': '29rshpmaj' 还有单引号哦
    widewing
        3
    widewing  
       2019-11-16 15:54:19 +08:00 via Android
    你是不是对正则有什么误解啊。。
    jdhao
        4
    jdhao  
       2019-11-16 15:54:46 +08:00 via Android
    使用 match group 就可以了
    iNaru
        5
    iNaru  
       2019-11-16 15:59:44 +08:00
    @zhuzhuaini 没办法的,只能分组。(?<={')([^']+)'(:)\s'([^']+)(?='})
    zhuzhuaini
        6
    zhuzhuaini  
    OP
       2019-11-16 16:08:13 +08:00
    @iNaru 好吧 我用的 python 有这么个字符串想处理,如果不通过正则的话 有什么被的方案吗?谢谢谢谢
    sixway
        7
    sixway  
       2019-11-16 16:32:36 +08:00
    In [1]: import re

    In [2]: str = "{'JSESSIONID': '29rshpmaj'}"

    In [3]: print(re.sub(r"[?{}']", "", str))
    JSESSIONID: 29rshpmaj
    sixway
        8
    sixway  
       2019-11-16 16:36:16 +08:00   ❤️ 1
    In [4]: print(re.sub(r"[?{} ']", "", str))
    JSESSIONID:29rshpmaj
    zhuzhuaini
        10
    zhuzhuaini  
    OP
       2019-11-16 16:58:16 +08:00
    @sixway 感谢 这很完美!
    zhuzhuaini
        11
    zhuzhuaini  
    OP
       2019-11-16 16:58:40 +08:00
    @pompeii 谢谢 这个手册有空恶补一下
    sixway
        12
    sixway  
       2019-11-16 17:27:31 +08:00
    @zhuzhuaini #10 不能匹配内容的时候,可以考虑替换内容以外的为空。思维不要那么死板
    ipwx
        13
    ipwx  
       2019-11-16 18:00:53 +08:00 via Android
    匹配出 group 以后直接丢给 str format 不就行了?
    ipwx
        14
    ipwx  
       2019-11-16 18:01:39 +08:00 via Android
    '{}:{}'.format(*re.match(...).groups())
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3522 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:27 · PVG 12:27 · LAX 20:27 · JFK 23:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.