<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def accession(self):
 """ Parse accession number from commonly supported formats. If the defline does not match one of the following formats, the entire description (sans leading caret) will be returned. * >gi|572257426|ref|XP_006607122.1| * >gnl|Tcas|XP_008191512.1 * >lcl|PdomMRNAr1.2-10981.1 """

        accession = None
        if self.defline.startswith('>gi|'):
            match = re.match('>gi\|\d+\|[^\|]+\|([^\|\n ]+)', self.defline)
            if match:
                accession = match.group(1)
        elif self.defline.startswith('>gnl|'):
            match = re.match('>gnl\|[^\|]+\|([^\|\n ]+)', self.defline)
            if match:
                accession = match.group(1)
        elif self.defline.startswith('>lcl|'):
            match = re.match('>lcl\|([^\|\n ]+)', self.defline)
            if match:
                accession = match.group(1)
        return accession