code: def _create_extn_pattern(single_extn_symbols):
      
      # There are three regular expressions here. The first covers RFC 3966
      # format, where the extension is added using ";ext=". The second more
      # generic one starts with optional white space and ends with an optional
      # full stop (.), followed by zero or more spaces/tabs/commas and then the
      # numbers themselves. The other one covers the special case of American
      # numbers where the extension is written with a hash at the end, such as
      # "- 503#".  Note that the only capturing groups should be around the
      # digits that you want to capture as part of the extension, or else
      # parsing will fail!  Canonical-equivalence doesn't seem to be an option
      # with Android java, so we allow two options for representing the accented
      # o - the character itself, and one in the unicode decomposed form with
      # the combining acute accent.
      return (_RFC3966_EXTN_PREFIX + _CAPTURING_EXTN_DIGITS + u("|") +
              u("[ \u00A0\\t,]*(?:e?xt(?:ensi(?:o\u0301?|\u00F3))?n?|") +
              u("\uFF45?\uFF58\uFF54\uFF4E?|") +
              u("\u0434\u043e\u0431|") + u("[") + single_extn_symbols + u("]|int|anexo|\uFF49\uFF4E\uFF54)") +
              u("[:\\.\uFF0E]?[ \u00A0\\t,-]*") + _CAPTURING_EXTN_DIGITS + u("#?|") +
              u("[- ]+(") + _DIGITS + u("{1,5})#"))
docs: Helper initialiser method to create the regular-expression pattern to
      match extensions, allowing the one-char extension symbols provided by
      single_extn_symbols.