StringRegExp模式无法正常工作

时间:2016-11-16 18:17:24

标签: arrays string autoit pcre

我有这个字符串:

{"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完全陌生。

我使用的是使用PCRE RegExp-Engine的AutoIT(这就是想法)。

1 个答案:

答案 0 :(得分:1)

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

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

请参阅regex demo

<强>详情:

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