0

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

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

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

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

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

4

2 回答 2

3

在 PHP 中,您需要分两步完成(无论如何这可能会更好——将所有内容都塞进一个正则表达式并不总是最好的主意)。

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

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

这将找到第一次出现的字符串 likesomething: ['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];
于 2013-01-15T08:19:42.130 回答
0

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

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

进一步:(__your__token__here__)*查找您的令牌的每个实例。

在此处粘贴一些数组:http: //gskinner.com/RegExr/并使用正则表达式生成器来测试您的正则表达式

这有帮助吗?

于 2013-01-15T07:34:01.070 回答