使用正则表达式解析数组

时间:2013-01-15 07:31:07

标签: regex

我有JS文件,我需要在其中解析该数组:

something: ['Prefix.All','Ignore.Me','Prefix.Another']

我需要从带有定义前缀的“something”数组中获取所有元素。 现在我可以得到它,如果数组只包含一个元素。我的正则表达式:

String: something: ['Prefix.All']
Can get element with:
/something\s*:\s*\[['"](Prefix[a-zA-Z0-9.]+)['"]]/

但如何在数组中找到许多元素?以及如何在文件中找到多个“某事”数组?

2 个答案:

答案 0 :(得分:3)

在PHP中,您需要分两步完成(无论如何可能更好 - 将所有内容塞入单个正则表达式并不总是最好的想法。)

首先,匹配您正在寻找的阵列。请注意,此正则表达式要求分隔符[]之间没有括号,因此嵌套数组或包含括号的字符串将导致正则表达式失败(如“匹配错误的文本”):

if (preg_match('/\bsomething: \[([^[\]]*)\]/', $subject, $regs)) {
    $result = $regs[1];
}

这会找到第一次出现的字符串,如something: ['Prefix.All','Ignore.Me','Prefix.Another'],并将'Prefix.All','Ignore.Me','Prefix.Another'放入$result

然后你可以从中得到所有的比赛:

preg_match_all('/\bPrefix[^\']*/', $result, $final, PREG_PATTERN_ORDER);
$final = $final[0];

答案 1 :(得分:0)

在正则表达式中,您可以使用()对令牌进行分组,并使用*多次询问。

所以:(something)*会给你“某事”这个词的每个实例。

此外:(__your__token__here__)*查找令牌的每个实例。

在此处粘贴部分数组:http://gskinner.com/RegExr/并使用正则表达式构建器测试正则表达式

这有帮助吗?