【问题标题】:StringRegExp pattern not working properlyStringRegExp 模式无法正常工作
【发布时间】:2016-11-16 18:17:23
【问题描述】:

我有这个字符串:

{"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(这就是我的想法)。

【问题讨论】:

  • 看起来像 JSON,顺便说一句。

标签: arrays string autoit pcre


【解决方案1】:

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

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

regex demo

详情

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

【讨论】: