【问题标题】:Regex To Catch Two Different Scenarios [duplicate]正则表达式捕捉两个不同的场景[重复]
【发布时间】:2021-03-24 13:30:12
【问题描述】:

目标:尝试仅捕获 Total Number (95,600.91),但是在某些文档中显示没有空格,需要创建正则表达式来查找有空格的场景和没有空格但返回 1 的场景捕获组。

总样本 I:=========================================== 95,600.91 .00 95,600.91

总样本二:=========================================== 95,600.91 .0095,600.91

我的正则表达式总计:(?:==\s+\d.*?\.00)(\S+)|(?:==\s+\d.*?\.00\s+)(\S+)

示例文本:

DM20066906 2020-06-22 WHOLE FOODS-WEST       12.37-    .00   12.37- 
DM20067812 2020-06-22 WHOLE FOODS-WEST       132.26-   .00   132.26-
DM20068372 2020-06-12 POMME D'API            143.72-   .00   143.72-
DM20069488 2020-06-25 WHOLE FOODS EAST       3.75-     .00   3.75-  
DM20069594 2020-06-12 J HOLTMANN             367.50-   .00   367.50-
DM20069986 2020-06-10 GOOD N NATURAL         210.00-   .00   210.00-
DM20079015 2020-07-03 VPFP PROGRAM FEES      641.32-   .00   641.32-

========================================== 95,600.91 .00 95,600.91

Printed on 2020-07-07 at 12:49

【问题讨论】:

  • ==\s+\d.*?\.00\s*(\S+)?
  • 你的数据是定长记录吗?

标签: regex


【解决方案1】:

尝试使用\s* 使.00 之后的空格可选

(?:==\s+\d.*?\.00)\s*(\S+)

【讨论】:

  • 这对我有用。看起来 \s* 是我在正则表达式中缺少的内容。我的理解是 \s* 必须意味着空间是允许的,但不是必需的,对吧?
  • 是的。 \s* 可以读作“一个空白字符重复 0 到多次”
猜你喜欢
  • 1970-01-01
  • 2011-12-14
  • 2014-09-10
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 1970-01-01
  • 2015-12-24
相关资源
最近更新 更多