2016-09-19 72 views
0

我想循環遍歷GitHub中的pull請求,並且如果pull請求在下面的代碼中有註釋,請執行一些操作(現在打印請求數)。我有一個包含我正在查找的評論(分散在拉請求中的多個註釋)的拉請求,但它不打印拉請求數。我懷疑它與我正在使用的正則表達式有關,因爲如果我打破if語句來查找正則表達式或字符串值,它可以正常工作,但是當我嘗試將它們合併到一個if語句中時,它不起作用。如果語句使用正則表達式有多個條件

我不認爲這是一個重複的問題,因爲我查看了可能已經有答案的問題下的所有建議。

for pr in repo.pull_requests(): 
     #check to ensure pull request meets criteria before processing 
     conflicts_base_branch = "This branch has no conflicts with the base branch" 
     checks = "All checks have passed" 
     sign_off_comment_present = re.compile(r"\B#sign-off\b", re.IGNORECASE) 
     for comment in list(repo.issue(pr.number).comments()): 
      if (conflicts_base_branch and checks in comment.body) and (sign_off_comment_present.search(comment.body)): 
       print(pr.number) 
+0

所有這些都出現在_one_評論或不同評論中嗎?你的版本要求他們都在同一評論中。同樣'conflict_base_branch和在comment.body'中的檢查與'(conflicts_base_branch)和(在in_comment.body中檢查)'或'(True)和(在checks.body中檢查)'相同,所以它只檢查是否存在後者。 – mata

+0

這些出現在拉取請求中的多個註釋中。這是否意味着它應該是'如果comments_body中有衝突_base_branch並且在comment.body'中檢查?如果是這樣,我該如何將它與正則表達式結合起來? – DBS

+0

您需要在迭代時分別檢查它們。檢查我的答案 – mata

回答

1

您的解決方案要求的所有條件,要在同一評論滿足,如果他們在不同的意見將無法正常工作。爲此,您需要跟蹤在反覆評論時滿足哪些條件,例如:

for pr in repo.pull_requests(): 
    #check to ensure pull request meets criteria before processing 
    conflicts_base_branch = "This branch has no conflicts with the base branch" 
    checks = "All checks have passed" 
    sign_off_comment_present = re.compile(r"\B#sign-off\b", re.IGNORECASE) 
    passes_checks = False 
    has_signoff = False 
    has_no_conflicts = False 
    for comment in list(repo.issue(pr.number).comments()): 
     if checks in comment.body: 
      passes_checks = True 
     if conflicts_base_branch in comment.body: 
      has_no_conflicts = True 
     if sign_off_comment_present.search(comment.body): 
      has_signoff = True 
    if passes_checks and has_no_conflicts and has_signoff: 
     print(pr.number) 
+0

謝謝!這工作!我忘記檢查每個條件,同時通過拉請求評論。 – DBS