docs: def ExpandWindowsEnvironmentVariables(data_string, knowledge_base):
    r"""Take a string and expand any windows environment variables.
  
    Args:
      data_string: A string, e.g. "%SystemRoot%\\LogFiles"
      knowledge_base: A knowledgebase object.
  
    Returns:
      A string with available environment variables expanded. If we can't expand
      we just return the string with the original variables.
    """
    win_environ_regex = re.compile(r"%([^%]+?)%")
    components = []
    offset = 0
    for match in win_environ_regex.finditer(data_string):
      components.append(data_string[offset:match.start()])
  
      # KB environment variables are prefixed with environ_.
      kb_value = getattr(knowledge_base, "environ_%s" % match.group(1).lower(),
                         None)
      if isinstance(kb_value, string_types) and kb_value:
        components.append(kb_value)
      else:
        # Failed to expand, leave the variable as it was.
        components.append("%%%s%%" % match.group(1))
      offset = match.end()
    components.append(data_string[offset:])  # Append the final chunk.
    return "".join(components)