使用正则表达式删除字符串的最后一个字符

时间:2014-09-01 07:55:04

标签: php regex

我需要在PHP中找到一种方法,使用正则表达式删除2个字符串的最后部分。这样一旦他们被剥夺了额外的字符,我就能找到他们之间的匹配。以下是我正在处理的字符串数据类型的示例:

categories_widget-__i__
categories_widget-10

所以我想删除:

-__i__ from the first string
-10 from the second string

提前致谢。

4 个答案:

答案 0 :(得分:0)

您可以尝试使用以下代码删除-到最后一个字符的所有字符。

<?php
$text = <<<EOD
categories_widget-__i__
categories_widget-10
EOD;
echo preg_replace("~-.*$~m","",$text);
?>

输出:

categories_widget
categories_widget

-与文字-符号相匹配。 .*匹配-符号后面的任何字符,直到行尾。 $表示一行的结尾。通过用空字符串替换所有匹配的字符,可以得到所需的输出。

答案 1 :(得分:0)

$str1 = "categories_widget-__i__";
$str2 = "categories_widget-10";
$arr1 = explode("-", $str1);
$arr2 = explode("-", $str2);
echo $arr1[0];
echo $arr2[0];

答案 2 :(得分:0)

连字符的最后一次出现是唯一重要的事情吗?如果是这样,你不需要正则表达式:

$firstPart = substr($str, 0, strrpos($str, '-'));

» example

答案 3 :(得分:0)

(.*)-

如果 - 是分裂标准

,这个简单的正则表达式可以完成你的工作

参见演示。

http://regex101.com/r/rX0dM7/7