鱼C论坛

 找回密码
 立即注册
查看: 744|回复: 5

[已解决]正则,只匹配整数 百度搜到的都不能得到完美结果

[复制链接]
发表于 2019-4-1 14:39:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. # coding: utf-8
  2. import re


  3. s="00 01 0 1 2 3 258 000 00027 369 25.8 100  0025.36  0.36 0.0 45.6900 "
  4. result=re.findall("[^\.\d][1-9]\d+[^\.\d]|\s+\d\s+",s)  #只匹配整数(不考虑符号)
  5. print("期望输出:\n 0 1 2 3 258 369 100")
  6. print(result)

  7. '''
  8. 期望输出:
  9. 0 1 2 3 258 369 100
  10. [' 0 ', ' 2 ', ' 258 ', ' 369 ', ' 100 ']
  11. '''
复制代码



网上找的 没有一个能用的  只有这个还接近一些
最佳答案
2019-4-1 15:13:39
wp231957 发表于 2019-4-1 15:05
>>> import re
>>> s="00 01 0 1 2 3 258 000 00027 369 25.8 100  0025.36  0.36 0.0 45.6900 "
>>> ...
  1. import re


  2. s="00 01 0 1 2 3 258 000 00027 369 25.8 100  0025.36  0.36 0.0 45.6900 "
  3. result=re.findall(r"\b(?<!\.)[1-9](?<!\.)[0-9]*(?!\.)\b|\b(?<!\.)0(?!\.)\b",s)  #只匹配整数(不考虑符号)
  4. print("期望输出:\n 0 1 2 3 258 369 100")
  5. print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-1 15:00:30 | 显示全部楼层
本帖最后由 凌九霄 于 2019-4-1 15:02 编辑

360截图20190401150016377.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-1 15:05:26 | 显示全部楼层
本帖最后由 wp231957 于 2019-4-1 15:08 编辑


>>> import re
>>> s="00 01 0 1 2 3 258 000 00027 369 25.8 100  0025.36  0.36 0.0 45.6900 "
>>> result=re.findall("\b(?<!\.)[1-9](?<!\.)[0-9]*(?!\.)\b",s)
>>> print(result)
[]
>>>

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-1 15:13:39 | 显示全部楼层    本楼为最佳答案   
wp231957 发表于 2019-4-1 15:05
>>> import re
>>> s="00 01 0 1 2 3 258 000 00027 369 25.8 100  0025.36  0.36 0.0 45.6900 "
>>> ...
  1. import re


  2. s="00 01 0 1 2 3 258 000 00027 369 25.8 100  0025.36  0.36 0.0 45.6900 "
  3. result=re.findall(r"\b(?<!\.)[1-9](?<!\.)[0-9]*(?!\.)\b|\b(?<!\.)0(?!\.)\b",s)  #只匹配整数(不考虑符号)
  4. print("期望输出:\n 0 1 2 3 258 369 100")
  5. print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-1 15:57:35 | 显示全部楼层

刚才到网上查了一下,大致理解了一下  什么正向否定  反向否定

续问一下,为什么 0  要单独匹配呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-2 09:57:07 | 显示全部楼层
本帖最后由 凌九霄 于 2019-4-2 10:15 编辑
wp231957 发表于 2019-4-1 15:57
刚才到网上查了一下,大致理解了一下  什么正向否定  反向否定

续问一下,为什么 0  要单独匹配呢


因为0按要求不能在第一位,所以只能单独匹配0;正则殊途同归,有很多种方式,也可以这样:\b(?<!\.)\d(?!\.)\b|\b(?<!\.)[1-9]\d+(?!\.)\b  先匹配单个数字,再匹配多个数字,结果也是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-17 17:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表