我正在尝试使用正则表达式在我的应用程序路径中找到“system”文件夹,并将其替换为“counter”。 但我的正则表达方式对我不满意。 我的代表我的应用程序路径的字符串称为$ counterlocation,它看起来像这样:
“/无功/网络/ MyApp的/系统”
最终,我想以此结束:
的/ var / WWW / MyApp的/计数器
首先,我使用preg_match来确保我的模式是正确的。然后我会尝试preg_replace。我有正则表达式的以下代码:
$pattern='/(\/[0-9a-z]\/)*(myapp\/)(system)/i';
if (preg_match($pattern,$counterslocation,$matches)) {
var_dump($matches);
}
var_dump()调用返回以下输出:
array(4){[0] => string(10)“myapp / system”[1] => string(0)“”[2] => string(4)“myapp /”[3] => string(6)“system”
我的问题是,如何让正则表达式返回导致字符串“myapp”部分的所有内容?我想通过将它放入括号中,它会将其捕获为第一组...但看起来我做错了。
感谢。
答案 0 :(得分:2)
您尚未量化目录名称,因此它将目录与单个字母数字字符匹配。你需要:
/(\/[0-9a-z]+\/)*(myapp\/)(system)/
^
答案 1 :(得分:0)
在要提取的部分周围添加(),理想情况下也使用不同的分隔符,因此您不必转义斜杠:
%((/([0-9a-z]+/)*)(myapp/))(system)%