在正则表达式搜索中循环

时间:2012-07-02 15:21:05

标签: python regex

想知道我是否可以通过我在这里展示的一些代码得到一些帮助:

if re.search(r"\b2ProcessorsRequested\b", output):                  
    corelist.append("2")                                        
elif re.search(r"\b4ProcessorsRequested\b", output):
     corelist.append("4")
elif re.search(r"\b8ProcessorsRequested\b", output):
     corelist.append("8")
elif re.search(r"\b16ProcessorsRequested\b", output):
     corelist.append("16")
elif re.search(r"\b32ProcessorsRequested\b", output):
     corelist.append("32")
elif re.search(r"\b64ProcessorsRequested\b", output):
     corelist.append("64")
elif re.search(r"\b128ProcessorsRequested\b", output):
     corelist.append("128")
elif re.search(r"\b256ProcessorsRequested\b", output):
     corelist.append("256")
elif re.search(r"\b512ProcessorsRequested\b", output):
     corelist.append("512")
elif re.search(r"\b1024ProcessorsRequested\b", output):
     corelist.append("1024")
else:
     corelist.append("1")

这段代码的问题显然很多都是重复的,这也意味着我只能搜索一组核心列表(1,2,4等)。我如何转换此代码,以便它只是从1-1024循环?我认为这有点像这样:

x=0
while x < 1025:
  if re.search(r"\b", x, "ProcessorsRequested\b", output):                  
      corelist.append(x)
      break()
x+=1 

但我认为语法错误,因为它说(不记得确切的措辞)我无法在正则表达式部分传递超过3个参数。任何帮助都会很棒!我希望我有道理,如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:2)

修复正则表达式以搜索所有这些,并告诉您数字:

corelist = [m.group(1) for m in
            re.finditer(r"\b([0-9]+)ProcessorsRequested\b", output)]