首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python忽略日期模式

Python忽略日期模式
EN

Stack Overflow用户
提问于 2020-01-21 21:59:07
回答 1查看 147关注 0票数 1

样本数据:

代码语言:javascript
复制
Weight Measured: 80.7 kg (11/27/1900 24:59:00)
Pulse 64 \F\ Temp 37.3?C (99.1 ?F) \F\ Wt 101.2 kg (223 lb)
Weight as of 11/11/1900 72.2 kg (159 lb 1.6 oz)
Resp. rate 16, height 177.8 cm (5' 10"), weight 84.7 kg (186 lb|
11.2 oz)
And one extra weight example 100lbs

部分工作的Regex:

代码语言:javascript
复制
\b(?i)(?:weight|wt)\b(?:.){1,25}?\b(\d+\.?(?:\d+)).*?(\w+)\b

电流输出:

代码语言:javascript
复制
('80.7', 'kg'), ('101.2', 'kg'), ('11', '11'), ('84.7', 'kg'), ('100', 'lbs')

预期输出:

代码语言:javascript
复制
('80.7', 'kg'), ('101.2', 'kg'), ('72.2', 'kg'), ('84.7', 'kg'), ('100', 'lbs')

如何使当前正则表达式忽略日期并捕获以下值?另外,如何使这个正则表达式在行尾停止匹配?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-21 22:25:45

你可以用

代码语言:javascript
复制
re.findall(r'(?i)\bw(?:eigh)?t\b.{1,25}?\b(?<!\d/)(\d+(?:\.\d+)?)(?!/?\d)\s*(\w+)', text)

regex演示

详细信息

  • (?i) -与re.I相同-大小写不敏感模式
  • \b -一个单词边界
  • w(?:eigh)?t - wtweight
  • \b -一个单词边界
  • .{1,25}? -除行中断字符以外的任何1到25个字符,尽可能少。
  • \b -一个单词边界
  • (?<!\d/) -如果在当前位置的左边立即有一个数字和/,则会导致匹配失败。
  • (\d+(?:\.\d+)?) -第1组:一个或多个数字后面跟着一个可选的点序列和一个或多个数字
  • (?!/?\d) -如果在当前位置的右侧立即有一个可选的/和一个数字,则会导致匹配失败。
  • \s* - 0+白空间
  • (\w+) -第2组:一个或多个字母、数字或下划线。

请参阅Python演示

代码语言:javascript
复制
import re
text = """Weight Measured: 80.7 kg (11/27/1900 24:59:00)\nPulse 64 \F\ Temp 37.3?C (99.1 ?F) \F\ Wt 101.2 kg (223 lb)\nWeight as of 11/11/1900 72.2 kg (159 lb 1.6 oz)\nResp. rate 16, height 177.8 cm (5' 10"), weight 84.7 kg (186 lb|\n11.2 oz)\nAnd one extra weight example 100lbs"""
print(re.findall(r'(?i)\bw(?:eigh)?t\b.{1,25}?\b(?<!\d/)(\d+(?:\.\d+)?)(?!/?\d)\s*(\w+)', text))
# => [('80.7', 'kg'), ('101.2', 'kg'), ('72.2', 'kg'), ('84.7', 'kg'), ('100', 'lbs')]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59849789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档