鱼C论坛

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

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

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

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

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

x
# coding: utf-8
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("[^\.\d][1-9]\d+[^\.\d]|\s+\d\s+",s)  #只匹配整数(不考虑符号)
print("期望输出:\n 0 1 2 3 258 369 100")
print(result)

'''
期望输出:
 0 1 2 3 258 369 100
[' 0 ', ' 2 ', ' 258 ', ' 369 ', ' 100 ']
'''


网上找的 没有一个能用的  只有这个还接近一些
最佳答案
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 "
>>> ...
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(r"\b(?<!\.)[1-9](?<!\.)[0-9]*(?!\.)\b|\b(?<!\.)0(?!\.)\b",s)  #只匹配整数(不考虑符号)
print("期望输出:\n 0 1 2 3 258 369 100")
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 "
>>> ...
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(r"\b(?<!\.)[1-9](?<!\.)[0-9]*(?!\.)\b|\b(?<!\.)0(?!\.)\b",s)  #只匹配整数(不考虑符号)
print("期望输出:\n 0 1 2 3 258 369 100")
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-6-14 19:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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