StringRegExp 模式无法正常工作

StringRegExp pattern not working properly

我有这个字符串:

{"name": "Fancy HaXXor123Name","profession": 1,"race": 2,"map_id": 1052,"world_id": 268435461,"team_color_id": 0,"commander": false,"fov": 0.768}

我想取回一个包含以下信息的数组(从字符串的左到右):

Fancy HaXXor123Name
1
2
1052
268435461
0
false
0.768

我试图搞乱 RegExBuddy,得到了一个看起来像这样的有希望的模式

(\d{1,}).(\d{1,})|(\d{1,})|(?i)"(.*?)"

这是我得到的结果

name



Fancy HaXXor123Name



profession


1



race


2



map_id
10
2



world_id
2684354
1



team_color_id


0



commander



fov
0
768

所以信息之间有很大的空间,撕裂的数字和假的丢失。我无法解决这个问题,而且我是 StringRegExp 的新手。

我正在使用 AutoIT,它使用 PCRE RegExp 引擎(这就是我的想法)。

您可以使用如下正则表达式:

"\s*:\s*(?:"\K[^"]*|\K[^][\s,{}]+)

regex demo

详情:

  • "\s*:\s* - 文字 "、0+ 个空格、:、0+ 个空格
  • (?:"\K[^"]*|\K[^][\s,{}]+) - 非捕获组匹配 2 个备选方案:
    • "\K[^"]* - ",然后 \K 将到目前为止匹配的文本归零,然后将 " 以外的 0+ 个字符与 [^"]* 匹配
    • \K[^][\s,{}]+ - \K 删除到目前为止匹配的文本,并且 [^][\s,{}]+ 匹配除 ][、空格、,{}.