我有以下字符串,我需要用星号替换数字和点。我尝试了以下但是我只是设法替换了最后一部分,有没有一种方法可以用一个正则表达式搜索来完成它?或者我需要解析两次?:
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我得到所有整数但不是点加上多个星。
先谢谢。
答案 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;`
时获得多次启动的原因的答案。