使用preg_match在php中删除指定的下划线

时间:2010-04-15 17:21:27

标签: php regex pcre

在php中一直存在与preg_match的混淆。  我有一个这样的字符串:

apsd_01_03s_somedescription apsd_02_04_somedescription

我可以使用preg_match去除第三个下划线中的任何内容,包括第三个下划线。

感谢。

4 个答案:

答案 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);