【发布时间】:2021-10-03 00:03:38
【问题描述】:
我相信这可能已经被问过很多次了,但我找不到一种方法让它适用于 json 内容。结果否定模式匹配所有 json 字符串(即使子字符串存在)。我确定,我可能做错了什么。
想法是匹配其中没有“key”字符串的json字符串,而不匹配其中有“key”字符串的那个。
注意:我确实需要通过带有负正则表达式的“re.match”(而不是在 python 中匹配和否定)来实现这一点,因为我用许多表达式批量执行此操作,并且不能真正改变单独一个表达式的函数方式。
比如下面是我的两个json字符串
'{"key": "success", "name": "peter"}'
'{"name": "sam"}'
我使用下面的正则表达式模式进行否定匹配
((?!key).).*
结果是
Python 3.9.5 (default, May 11 2021, 08:20:37)
[GCC 10.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> pattern = r"((?!key).).*"
>>> jsonstring = '{"key": "success", "name": "peter"}'
>>> re.match(pattern, jsonstring)
<re.Match object; span=(0, 35), match='{"key": "success", "name": "peter"}'>
>>> jsonstring = '{"name": "sam"}'
>>> re.match(pattern, jsonstring)
<re.Match object; span=(0, 15), match='{"name": "sam"}'>
我在这里做错了什么吗?正在尝试不同的模式,但到目前为止没有成功。
【问题讨论】: