2017-03-15 6 views
0

期限切れのクライアント証明書の通知をいくつかリストし、クライアント名と有効期限の日付を含む電子メールを送信しようとしています。Regex Python:特別なコンテンツを抽出する

r = self._s.get(self.url) 
if r.status_code == 200: 
     pass 
    else : 
     return None 
    for i in re.finditer('<a id="[A-Z0-9]+" href="/ui/partycfg/remote/Certificate\?partyId=([0-9]+).*?" title=".*?">(.*?)</a>', r.text): 
     print i.group(1) + ": " + i.group(2) 

私は、例えば(2) i.groupeを使用してリストを取得することができ、ここで、リストのようなものです:

partner1's certificate 'partner certif1' expired on 08/23/17 
partner2's certificate 'partner certif2' expired on 02/14/18 

は、どのように私は、パートナーの名前と日付を抽出することができます。 は

+0

あなたはPythonのコードを投稿する際に正確にインデントを再現する必要がある正規表現は、文字列のスライスに比べて非常に遅いです。さもなければ、あなたは人々に見せているコードに新しい問題を導入しています。 – khelwood

答えて

0

あなたは

(.*?)'s.*((?:\d{2}\/){2}\d{2}) 

Regex Demo

  1. は、グループ内のグループに2

サンプルコードを1

  • 取得日をパートナー名を取得することを試みることができますありがとう:

    import re 
    regex = r"(.*?)'s.*((?:\d{2}\/){2}\d{2})" 
    test_str = ("partner1's certificate 'partner certif1' expired on 08/23/17\n" 
        "partner2's certificate 'partner certif2' expired on 02/14/18") 
    
    matches = re.finditer(regex, test_str) 
    for match in matches: 
        print(match.group(1)); 
        print(match.group(2)); 
    

    Run Code

  • +0

    それは私が感謝したいと思うものです! – GreenX

    0

    あなたは正規表現は、このためのやり過ぎで、正規表現を必要としません。

    data = """partner1's certificate 'partner certif1' expired on 08/23/17 
    partner2's certificate 'partner certif2' expired on 02/14/18""" 
    
    for line in data.split('\n'): 
        name = line[:line.find("'")] 
        date = line[-8:] 
        print "name:", name, "date:", date 
    

    出力:

    name: partner1 date: 08/23/17 
    name: partner2 date: 02/14/18 
    

    Try online

    +0

    ありがとう – GreenX

    関連する問題