我有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.]+)['"]]/
但如何在数组中找到许多元素?以及如何在文件中找到多个“某事”数组?
答案 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/并使用正则表达式构建器测试正则表达式
这有帮助吗?