def _address_rxp(self, addr):
        """ Create a regex string for addresses, that matches several representations:
            - with(out) '0x' prefix
            - `pex` version
            This function takes care of maintaining additional lookup keys for substring matches.
            In case the given string is no address, it returns the original string.
        """
        try:
            addr = to_checksum_address(addr)
            rxp = '(?:0x)?' + pex(address_checksum_and_decode(addr)) + f'(?:{addr.lower()[10:]})?'
            self._extra_keys[pex(address_checksum_and_decode(addr))] = addr.lower()
            self._extra_keys[addr[2:].lower()] = addr.lower()
        except ValueError:
            rxp = addr
        return rxp