我试图在这里列出如何匹配看起来像数组打印器的字符串。
variable_data[0][var_name]
我想从上面的例子中得到 3 个字符串,variable_data、0 和 var_name。上面的示例保存在数据库中,因此可以重新创建相同的数组结构,但卡住了。此外,if 案例应查找 IF 字符串(如上所述(在该结构中,否则不需要preg_match。
注意:我不想序列化该数组,因为数组"可能"包含一些在反序列化时可能会破坏它的字符,并且我还需要数组中的该值完全可见。
任何具有正则表达式技能的人都可能知道这种方法?
溶液:
('b(['w]*['w]).'b(['w]*['w]).+('b['w]*['w]))
应该跳过 Thos 2 第一个索引...但我仍然得到我想要的:)
不是没有,但你不能做..
$result = explode('[', someString);
foreach ($result as $i => $v) {
$temp = str_replace(']'. ''. $result[$i]);
//Do something with temp
}
显然,您需要根据您正在做的事情稍微编辑上述内容,但它非常简单,甚至为您提供了相同的灵活性,并且您不需要调用匹配引擎......
我不认为我们在这里为人们构建正则表达式......相反,请参阅 http://regexpal.com/以获取带有视觉辅助的正则表达式测试器/构建器。
此外,人们通常不知道如何正确使用它们,然后由其他人为他们创建表达式来培养。
请记住,复杂的表达式可能会产生可怕的性能开销,尽管您的请求似乎并不复杂......
然后在强制发布您完成的正则表达式并回答您自己的问题之后,最多 1337ne$$ :)
但既然我很好,这就是你的奖励:
'[.+']'['d+']
或
[a-z]+_[a-z]+'[.+']'['d+']
根据您要从字符串中匹配的内容(您没有指定(,所以我假设所有
两者的执行方式如下:
arr_var[name][0]; //Matched
arr_var[name]; //Not matched
arr_var[name][0][1];//Matched
arr_var[name][2220][11];//Matched
再次,在上面的链接中测试它们并使用视觉辅助工具理解它们。
解决方案:
('b(['w]*['w]).'b(['w]*['w]).+('b['w]*['w]))
应该跳过这两个前索引...但我仍然得到我想要的:)
编辑
这是改进的:
$str = "variable[group1][parent][child][grandchild]";
preg_match_all('/('b(['w]*['w]))/', $str,$matches);
echo '<pre>';
print_r($matches);
echo '</pre>';
// Output
Array
(
[0] => variable
[1] => group1
[2] => parent
[3] => child
[4] => grandchild
)