我放弃了!我在这里尝试了很多不同的事情,我剩下的头发也少了,所以如果有人能帮助我,我将不胜感激。
我有一些格式错误的 Json:
friend_in_need: {
id: 3
possible: {
is_ironman: yes
difficulty: {">": 1}
has_start_date: {"<": "1936-01-02"}
has_any_custom_difficulty_setting: no
game_rules_allow_achievements: yes
}
happened: {
has_country_flag: "achievement has joined faction"
}
}
...我正在尝试使用正则表达式替换语句在各个步骤中进行清理。
我接下来要做的步骤是匹配每个键和字符串值,以便我在它们周围添加双引号,如下所示:
"friend_in_need": {
"id": 3
"possible": {
"is_ironman": "yes"
"difficulty": {">": 1}
"has_start_date": {"<": "1936-01-02"}
"has_any_custom_difficulty_setting": "no"
"game_rules_allow_achievements": "yes"
}
"happened": {
"has_country_flag": "achievement has joined faction"
}
}
我尝试了各种不同的方法,首先对键进行了一些成功的排序,但是我找不到一种方法来选择字符串值,排除那些已经在引号中的值。如果有必要,我很乐意分多个步骤来完成此操作。
例如,我知道这些部分让我更接近..
(?:\".+?\")
匹配括号内的所有内容
\b([a-zA-Z0-9@_]+)\b
匹配边界词 \S 可能会更好
但我无法将两者结合起来以与第一个不匹配。我以为这会起作用,但事实并非如此:
(?!(?:\".+?\")))\b([a-zA-Z0-9@_]+)\b
任何帮助将不胜感激。
提前致谢!
您可以通过使用负lookbehind和负lookahead标记来实现这一点。如果你使用了类似 -
的东西(?<![\"\w])\w+(?![\"\w])
它将匹配前面没有其他单词字符或
"
并且后面没有其他单词字符或 "
的所有单词字符组
您可以根据需要替换中间的
\w+
,以更好地适合您的用例