我对正则表达式不好,可能需要帮助来识别数字的分数。 (分数是正确的单词吗?我的意思是.
背后的数字,如.5
中的2.5
因此,如果我将10.0/5.5/41.1
输入到正确的preg_replace()
(PHP)中,我希望它能够找到(并替换).0
,.4
和.1
。对于小数,总是有一个.
限制器。这是正确的吗?
答案 0 :(得分:4)
您可以使用以下模式:(\d+)(\.\d+)
并替换为$1<span class="foo">$2</span>
PHP代码
$string = '10.0/5.5/41.1';
$output = preg_replace('#(\d+)(\.\d+)#', '$1<span class="foo">$2</span>', $string);
var_dump($output);
<强>输出强>
string '10<span class="foo">.0</span>/5<span class="foo">.5</span>/41<span class="foo">.1</span>' (length=88)
<强>解释强>
(\d+)
:匹配一个或多个数字并放入第1组(\.\d+)
:匹配一个点和一个或多个数字并放入第2组$n
答案 1 :(得分:1)
<?php
echo preg_replace('/(\d+)(\.\d+)/', '${1}replace_here', '10.23')
?>
它会打印
10replace_here
匹配。你用 \。因为。是一个通配符,用于在谈论正则表达式时匹配任何内容。 要匹配一个或多个数字,请使用\ d +(+至少为1)。所以基本上,模式是说我将匹配左侧部分。和严谨的部分(包括。)。你可以在括号内看到它。您可以使用$ n调用匹配的内容,其中n是位置。所以你将有两场比赛。 $ 1会给你左边的。而2美元将给予正确的一面。
我使用了$ {1}因为你想要替换它。有一个可能导致错误的数字,因为11美元是匹配(它匹配100次给你0美元,1美元,2美元,......,99美元)