我对正则表达式不好,可能需要帮助来识别数字的分数。.
(分数是正确的词吗?我的意思是像.5
in后面的数字2.5
)
因此,如果我输入10.0/5.5/41.1
一个像样的preg_replace()
(PHP),我希望它找到(并替换).0
,.4
和.1
. .
小数总是有一个as 限制器。这可以用正则表达式吗?
您可以使用以下模式:(\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
<?php
echo preg_replace('/(\d+)(\.\d+)/', '${1}replace_here', '10.23')
?>
它会打印
10replace_here
为了匹配 . 你用 \。因为 。是一个通配符,用于在您谈论正则表达式时匹配任何内容。要匹配一个或多个数字,请使用 \d+ (+ 至少为一个)。所以基本上,模式是说我将匹配 . 和 rignt 部分(包括 .)。您可以在括号内看到它。您可以使用 $n 调用匹配的内容,其中 n 是位置。所以你会有两场比赛。$1 将为您提供 . 和 $2 将给出右侧。
我使用 ${1} 是因为您可能想替换 . 带有一个可能导致错误的数字,因为 $11 是匹配项(匹配 100 次,给您 $0、$1、$2、...、$99)