我有这个字符串。
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
。我需要它对于一位数的情况是灵活的。我以为+
很贪心。我错过了什么?
答案 0 :(得分:7)
+
贪婪 - 但\d+
中的只是贪婪,{em} 贪婪(?:(?!rows).)+
。后者正在吃1
。也许你更喜欢(?:(?!rows)\D)+
(也就是说,吃不是数字的字符)。
答案 1 :(得分:3)
这部分
(?:(?!rows).)+
正则表达式的是贪婪的,它匹配到1
,所以让它像这样非贪婪
(?:(?!rows).)+?
你会得到
seed_spacing.group(1)
as
12