您好我想在php中使用preg_replace删除一个字符,所以我在这里有这个代码,我想删除整个字符,字母和数字,除了最后一个数字,其中有短划线( - )符号后跟数字所以这是我的代码。
echo preg_replace('/(.+)(?=-[0-9])|(.+)/','','asdf1245-10');
我希望结果是
-10
上面的问题不是很好。我使用http://www.regextester.com/检查了模式它似乎有效,但另一方面http://www.phpliveregex.com/根本不起作用。我不知道为什么会有人帮助解决这个问题?
非常感谢
答案 0 :(得分:2)
这是一种方法:
echo preg_replace('/^.+?(-[0-9]+)?$/','$1','asdf1245-10');
<强>输出:强>
-10
和
echo preg_replace('/^.+?(-[0-9]+)?$/','$1','asdf124510');
<强>输出:强>
<nothing>
答案 1 :(得分:0)
我的第一个想法是在这种情况下使用 explode ..让它像下面的代码一样简单。
$string = 'asdf1245-10';
$array = explode('-', $string);
end($array);
$key = key($array);
$result = '-' . $array[$key];
$ result =&gt; &#39; -10&#39 ;;
答案 2 :(得分:0)
另一种方式:
$result = preg_match('~\A.*\K-\d+\z~', $str, $m) ? $m[0] : '';
模式细节:
\A # start of the string anchor
.* # zero or more characters
\K # discard all on the left from match result
-\d+ # the dash and the digits
\z # end of the string anchor
答案 3 :(得分:0)
echo preg_replace('/(\w+)(-\w+)/','$2', 'asdf1245-10');