在php中一直存在与preg_match的混淆。 我有一个这样的字符串:
apsd_01_03s_somedescription
apsd_02_04_somedescription
我可以使用preg_match去除第三个下划线中的任何内容,包括第三个下划线。
感谢。
答案 0 :(得分:2)
试试这个:
preg_replace('/^([^_]*_[^_]*_[^_]*).*/', '$1', $str)
这将仅采用由_
分隔的前三个序列。因此,第三个_
上的所有内容都将被删除。
答案 1 :(得分:0)
如果要删除“_somedescription”部分:
preg_replace('/([^]*)([^]*)([^]*)(.*)/', '$1_$2_$3', $str);
答案 2 :(得分:0)
我同意Gumbo的回答,但是,您可以使用PHP的数组函数,而不是使用正则表达式:
$s = "apsd_01_03s_somedescription";
$parts = explode("_", $s);
echo implode("_", array_slice($parts, 0, 3));
// apsd_01_03s
与正则表达式解决方案相比,此方法在速度上的执行速度相似。
答案 3 :(得分:0)
如果第三个下划线是最后一个,你可以这样做:
preg_replace('/^(.+)_.+?)$/', $1, $str);