You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式需求:匹配仅含数字8的整数与小数

问题描述

我有一组示例数字:

888*
8*
8.88*
88.88*
88888.888*
899900
8.89
0.08
80
89899
50
32
30.8
0.081
0.8
8.1

其中标注*的是仅由数字8组成的数字(包含整数及带小数的形式),其余数字需忽略。我尝试用R语言正则表达式匹配这些目标数字,但现有代码仅实现了部分需求:

num <- c(888,
  8,
  8.88,
  88.88,
  88888.888,
  899900,
8.89,
0.08,
80,
89899,
50,
32,
30.8,
0.081,
0.8,
8.1)

grepl('^8+[^\\.]*[^0-7|9]*', num)
解决方案

你当前的正则表达式逻辑存在漏洞,无法精准匹配仅含8的整数和带小数的情况。正确的正则需要覆盖两种场景:纯整数全为8,或者带小数点且整数、小数部分均只有8。

正则表达式说明

使用正则:^8+(\\.8+)?$

  • ^:匹配字符串起始位置
  • 8+:匹配1个或多个连续的8(对应整数部分)
  • (\\.8+)?:可选的小数部分,由小数点加1个或多个8组成,?表示该部分可省略
  • $:匹配字符串结束位置

R语言实现代码

num <- c(888,
  8,
  8.88,
  88.88,
  88888.888,
  899900,
  8.89,
  0.08,
  80,
  89899,
  50,
  32,
  30.8,
  0.081,
  0.8,
  8.1)

# 执行匹配
grepl('^8+(\\.8+)?$', num)

运行后会返回一个逻辑向量,目标数字对应的位置为TRUE,其余为FALSE,可准确筛选出所有符合要求的数字。

内容的提问来源于stack exchange,提问作者karuno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:10:32