code: def _get_matching_variable_names(variable, variable_names):
      if variable in variable_names:
          return [variable]
      r = re.compile("{[^}]*}")
      key = r.sub(r"\\[[\\d+]\\]", variable, re.U)
      r2 = re.compile(key)
      variable_names = [
          v_name for v_name in variable_names if re.match(r2, v_name)
      ]
      if not variable_names:
          raise ValueError('Variable "' + variable + '" is not found.')
      return variable_names
  
imports: import itertools
  import os
  import re
  from collections import OrderedDict
  import nnabla
  import nnabla.functions
  import nnabla.solver
  import numpy
  from nnabla.core.graph_optimizer import IdentityRemover
  from nnabla.initializer import NormalInitializer, UniformInitializer, ConstantInitializer, RangeInitializer
  from nnabla.logger import logger
  from nnabla.utils import nnabla_pb2
  from nnabla.utils.communicator_util import current_communicator, single_or_rankzero
  from nnabla.utils.create_cache import CreateCache
  from nnabla.utils.data_iterator import data_iterator_csv_dataset, data_iterator_cache
  from nnabla.utils.get_file_handle import get_initial_file_loader, load_files
  from nnabla.utils.learning_rate_scheduler import PolynomialScheduler, CosineScheduler, ExponentialScheduler, StepScheduler, LinearWarmupScheduler
label_desc: Use image node_id 3 for calling a global function with example usage: _get_matching_variable_names(variable, variable_names) and returns: variable_names, list