正则提问

2019 年 11 月 16 日
 zhuzhuaini
现在有这样一个字符串:
{'JSESSIONID': '29rshpmaj'}
我想匹配除了{}'以外的字符,即:
JSESSIONID:29rshpmaj
目前使用了这样一个正则 [^{}'] 能匹配出除了这三个特殊字符以外的内容,但是匹配数量太多了,我想有没有一条表达式只出一个结果,内容为 JSESSIONID:29rshpmaj
3420 次点击
所在节点    正则表达式
14 条回复
iNaru
2019 年 11 月 16 日
(?<={)[^{]+(?=})
zhuzhuaini
2019 年 11 月 16 日
@iNaru 不对哦 这样的匹配结果是:'JSESSIONID': '29rshpmaj' 还有单引号哦
widewing
2019 年 11 月 16 日
你是不是对正则有什么误解啊。。
jdhao
2019 年 11 月 16 日
使用 match group 就可以了
iNaru
2019 年 11 月 16 日
@zhuzhuaini 没办法的,只能分组。(?<={')([^']+)'(:)\s'([^']+)(?='})
zhuzhuaini
2019 年 11 月 16 日
@iNaru 好吧 我用的 python 有这么个字符串想处理,如果不通过正则的话 有什么被的方案吗?谢谢谢谢
sixway
2019 年 11 月 16 日
In [1]: import re

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

In [3]: print(re.sub(r"[?{}']", "", str))
JSESSIONID: 29rshpmaj
sixway
2019 年 11 月 16 日
In [4]: print(re.sub(r"[?{} ']", "", str))
JSESSIONID:29rshpmaj
pompeii
2019 年 11 月 16 日
zhuzhuaini
2019 年 11 月 16 日
@sixway 感谢 这很完美!
zhuzhuaini
2019 年 11 月 16 日
@pompeii 谢谢 这个手册有空恶补一下
sixway
2019 年 11 月 16 日
@zhuzhuaini #10 不能匹配内容的时候,可以考虑替换内容以外的为空。思维不要那么死板
ipwx
2019 年 11 月 16 日
匹配出 group 以后直接丢给 str format 不就行了?
ipwx
2019 年 11 月 16 日
'{}:{}'.format(*re.match(...).groups())

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/620182

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX