正则提问

2019-11-16 14:30:49 +08:00
 zhuzhuaini
现在有这样一个字符串:
{'JSESSIONID': '29rshpmaj'}
我想匹配除了{}'以外的字符,即:
JSESSIONID:29rshpmaj
目前使用了这样一个正则 [^{}'] 能匹配出除了这三个特殊字符以外的内容,但是匹配数量太多了,我想有没有一条表达式只出一个结果,内容为 JSESSIONID:29rshpmaj
2769 次点击
所在节点    正则表达式
14 条回复
iNaru
2019-11-16 14:53:08 +08:00
(?<={)[^{]+(?=})
zhuzhuaini
2019-11-16 15:51:02 +08:00
@iNaru 不对哦 这样的匹配结果是:'JSESSIONID': '29rshpmaj' 还有单引号哦
widewing
2019-11-16 15:54:19 +08:00
你是不是对正则有什么误解啊。。
jdhao
2019-11-16 15:54:46 +08:00
使用 match group 就可以了
iNaru
2019-11-16 15:59:44 +08:00
@zhuzhuaini 没办法的,只能分组。(?<={')([^']+)'(:)\s'([^']+)(?='})
zhuzhuaini
2019-11-16 16:08:13 +08:00
@iNaru 好吧 我用的 python 有这么个字符串想处理,如果不通过正则的话 有什么被的方案吗?谢谢谢谢
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
2019-11-16 16:36:16 +08:00
In [4]: print(re.sub(r"[?{} ']", "", str))
JSESSIONID:29rshpmaj
pompeii
2019-11-16 16:38:24 +08:00
zhuzhuaini
2019-11-16 16:58:16 +08:00
@sixway 感谢 这很完美!
zhuzhuaini
2019-11-16 16:58:40 +08:00
@pompeii 谢谢 这个手册有空恶补一下
sixway
2019-11-16 17:27:31 +08:00
@zhuzhuaini #10 不能匹配内容的时候,可以考虑替换内容以外的为空。思维不要那么死板
ipwx
2019-11-16 18:00:53 +08:00
匹配出 group 以后直接丢给 str format 不就行了?
ipwx
2019-11-16 18:01:39 +08:00
'{}:{}'.format(*re.match(...).groups())

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

https://www.v2ex.com/t/620182

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

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

© 2021 V2EX