用正则表达式替换整数和点

时间:2017-03-26 23:30:48

标签: php regex

我有以下字符串,我需要用星号替换数字和点。我尝试了以下但是我只是设法替换了最后一部分,有没有一种方法可以用一个正则表达式搜索来完成它?或者我需要解析两次?:

FOO_BAR_FOOBA_1_R:FOO_1.0

我试过的正则表达式是:(\ d。\ d)那个抓住最后一部分而不是开头。 我正在使用PHP,所以下面是我到目前为止的代码:

$re = '/(\d.\d)/';
$str = 'FOO_BAR_FOOBA_1_R:FOO_1.0';
$subst = '*';

$result = preg_replace($re, $subst, $str);

echo "The result is".$result;

如果我使用\ d我得到所有整数但不是点加上多个星。

先谢谢。

1 个答案:

答案 0 :(得分:0)

你的正则表达式:

a number

正在寻找any non new line character.a number是正则表达式中的特殊字符),并再次\d+(\.\d+)? 。字符串中唯一出现的位置是最后一个。有关此演示,请参阅:https://regex101.com/r/vHef6Q/2/

您可以使用:

.

查找带有可选小数部分的任何数字。

演示:https://regex101.com/r/vHef6Q/1/

在正则表达式中注意\d s。如果允许多个值,也请使用quantifiers+是一个整数,对于大于9的数字,您需要\d。这也是您在使用`select distinct t1.ExNo, t3.ExDesc from table1 t1 left join table2 t2 on t1.ExNo = t2.ExNo join table3 t3 on t3.ExTyp = case when t1.ExTyp = 'CONT' and t2.ExTyp is not null then t2.ExTyp else t1.ExTyp end order by t1.ExNo;` 时获得多次启动的原因的答案。