【发布时间】:2020-10-19 16:38:37
【问题描述】:
我有以下 JSON 对象
{
"Submitter":"Fred",
"Create Date":"2019-11-05T11:31:58.000+0000",
"Assigned To":"Some Person",
"Last Modified By":"Fred@acme.com",
"A String of Four": "A String with 4 words and 3 spaces",
"Another Test": "Four Words Appear Here",
}
我想删除键中的所有空格(例如“创建日期”和“四个字符串”等)但是我不想删除值中的空格。
我尝试了以下方法,但这会提取除引号和冒号 (":) 之后的所有空格
(?!")\s(?!")(?!:)
我也试过
\s(?=\w*\":)
但这只会拾取以引号和冒号 (":) 结尾的单词之前的 最后一个空格,并且不会拾取 Key 中的其他空格。
我的下一次尝试和我认为最接近的一次是:
(?<=").*?(?=\w*":)|(?<!":)(?!.*?)(?=\w*)
【问题讨论】:
-
为什么要使用
regex来完成这项任务?一个简单的str.remove(' ')就可以了。 -
@ChihebNexus:可能 OP 希望正则表达式对整个 JSON 字符串进行操作。
-
@RobertHarvey 好点。
-
试试
\s(?=[^"]*":\s*")(demo)。 -
@WiktorStribiżew:非常好。将其发布为答案。您可以使用 Regex101 提供的解释来支持答案。