如何在 PHP 中使用正则表达式来查找被空格包围的数字?



使用正则表达式/PHP,我试图从刺痛中提取一个数字,但前提是该数字之前有一个空格,之后还有一个空格。

现在我有这个:

$tacNO = number_format(intval(preg_replace('/[^0-9.]/','',$row[tactical])));

它可以获取数字,但我需要调整 regedit 以测试包含的空格,并仅返回数字。这可以通过回顾和展望来完成吗?什么能做到这一点?

s[0-9]+s这样的正则表达式会捕获任何两侧都有空格的数字。 如果要确保两侧的字符是空格(不是制表符等(,请改用以下内容:[ ][0-9]+[ ]如果要匹配一侧只有空格的数字,请在空格标识符后使用 * 量词。

就像拉格里普说的,一个捕获小组可能是最好的方法。 您可以通过用括号将所需零件括起来来使用捕获组:[ ]([0-9]+)[ ]。 或者,您可以将非捕获组添加到空间:(?:[ ])[0-9]+(?:[ ])。这样做是使用它们来匹配字符串,但在给出输出时忽略它们。

如果你想测试你的正则表达式字符串,网站 regex101.com 是我个人的最爱。

您可以按如下方式使用环顾四周:

$num = preg_match("/(?<=s)d+(?=s)/", $row[tactical], $matches);
$tacNO = number_format(intval($matches[0]));

或者,您可以在模式中使用显式空格,改用捕获组来隔离数字匹配:

$num = preg_match("/s+(d+)s+/", $row[tactical], $matches);
$tacNO = number_format(intval($matches[1]));

最新更新