我想从一些字符串捕获/提取数值。调整Python的正则表达式不包括一个数字在findall结果
下面是一个简单的字符串:
s='The shipping company had 93,999,888.5685 gallons of fuel on hand'
我想拉93,999,888.5685值 我已经得到了我的正则表达式来此
> mine=re.compile("(\d{1,3}([,\d{3}])*[.\d+]*)")
然而,当我做的findall我得到以下:
mine.findall(s)
[('93,999,888.5685', '8')]
我试过了很多不同的策略来保留它从8
匹配的但是我现在意识到,我不知道我知道它为什么在8
任何照明,将不胜感激匹配。
非常感谢,现在我需要弄清楚捕获与非捕获组。但我会和这个答案将帮助我到达那里。 – PyNEwbie 2010-08-31 20:12:06
@PyNEwbie这个想法是你的模式必须与整体匹配,但括号内的任何东西()都是一个捕获组。有时你需要在你的模式中使用组,但最终你并不在意捕捉它们,只是匹配它们。在这些情况下,您可以将它们标记为未捕获。另一种方法是使用命名组,并从您感兴趣的命名组中提取值。有关更多信息,请参阅http://docs.python.org/library/re.html。 – 2010-08-31 20:16:17