Python正则表达式 - +元字符不贪婪

时间:2014-01-11 06:15:01

标签: python regex

我有这个字符串。

  

string =“”“辣根培养:排水良好,脆弱的土壤,pH值   范围6.2-6.8将产生最好的结果。当收到根,   在一英尺深的土壤上工作,并加入堆肥,肥料或粪便   肥料。做一个5-6“深的沟和植物根插条12”,   倾斜2-3英寸深,平切最终......“”

和此代码

seed_spacing = re.search(r'(?:sow|transplant|plant)(?:(?!rows).)+(\d+)(\'|") apart', string, re.I)
seed_spacing.group()
>>>Make a 5-6" deep furrow and plant root cuttings 12" apart
seed_spacing.group(1)
>>>2

我希望看到12,但我得到了2。我需要它对于一位数的情况是灵活的。我以为+很贪心。我错过了什么?

2 个答案:

答案 0 :(得分:7)

+贪婪 - 但\d+中的只是贪婪,{em} 贪婪(?:(?!rows).)+。后者正在吃1。也许你更喜欢(?:(?!rows)\D)+(也就是说,吃不是数字的字符)。

答案 1 :(得分:3)

这部分

(?:(?!rows).)+
正则表达式的

是贪婪的,它匹配到1,所以让它像这样非贪婪

(?:(?!rows).)+?

你会得到

seed_spacing.group(1)

as

12