正则表达式都是数字和数字,带有一个小数位

时间:2016-09-28 17:45:14

标签: python regex

使用 https://regex101.com/r/ukjM5F/1

我的正则表达式是:

(?:'\d+[A-Za-z ]*)(\d+|\d+\.)

它使用g(全局)修饰符。

我如何抓住所有人 10个
12

以及
2.5
3.5

现在我被困在如何抓住第一个小数位(例如2.5)

我正在匹配此示例字符串:

['Table:     Waiter: kenny', 
 '======================================',
 '1      GRILLED AUSTRALIA ANGU    **29.00**',
 '----------------------------------',
 'TOTAL       29.00', 'CASH        29.00', 
 'CHANGE         0.00', 
 'Signature:__________________________', 
 'Thank you & see you again soon!']


 ['1      Carrot Cake                **2.50**',
  '----------------------------------', 
  'TOTAL        2.50', 'CASH         2.50',
  'CHANGE         0.00', 
  '====================================',
  'Thank You and',
  'See You Again!']

 ['Table:     Waiter: kenny', 
  '======================================',
  '1      SAUSAGE WRAPPED WITH B    **10.00**',
  '1      ESCARGOT WITH GARLIC H    **12.00**',
  '1      PAN SEARED FOIE GRAS      **15.00**',
  '1      SAUTE FIELD MUSHROOM W     **9.00**', 
  '1      CRISPY CHICKEN WINGS       **7.00**',
  '1      ONION RINGS                **6.00**',
  '----------------------------------',
  'TOTAL       59.00', 'CASH        59.00', 
  'CHANGE         0.00', 
  'Signature:__________________________',
  'Thank you & see you again soon!']


['1      Carrot Cake                **2.50**', 
'1      Chocolate Cake             **3.50**',
'----------------------------------', 
'TOTAL 
6.00', 'CASH                          
6.00', 'CHANGE         0.00', 
'===================================='
, 'Thank You and', 'See You Again!']

3 个答案:

答案 0 :(得分:1)

试试这个:\d+[.]?\d*

匹配所有带或不带小数点的数字

https://regex101.com/r/9UHCt4/1

但是,可能更好的做法是不要尝试在大部分文本处理中使用正则表达式。因为这是结构化的,你可以使用正则表达式识别线的结构,使用splitting / awk将其分解为列,然后从那里开始。

答案 1 :(得分:0)

您可以使用非捕获组:然后将数字与两位小数匹配很简单:

(?:\d[\s\w]+?)(\d+\.\d\d)

https://regex101.com/r/ukjM5F/3

答案 2 :(得分:0)

要仅获取菜单项的价格:

(?:[a-zA-Z]+\s[a-zA-Z]+\s+)(\d+\.\d\d)(?:')

https://regex101.com/r/ukjM5F/5