Este enfoque se puede usar para automatizar esto (la siguiente solución ejemplar está en Python, aunque obviamente se puede portar a cualquier idioma):
puede quitar el espacio en blanco de antemano Y guardar las posiciones de los caracteres que no son espacios en blanco para poder usarlos más adelante para averiguar las posiciones de los límites de la cadena coincidente en la cadena original como se muestra a continuación:
def regex_search_ignore_space(regex, string):
no_spaces = ''
char_positions = []
for pos, char in enumerate(string):
if re.match(r'\S', char): # upper \S matches non-whitespace chars
no_spaces += char
char_positions.append(pos)
match = re.search(regex, no_spaces)
if not match:
return match
# match.start() and match.end() are indices of start and end
# of the found string in the spaceless string
# (as we have searched in it).
start = char_positions[match.start()] # in the original string
end = char_positions[match.end()] # in the original string
matched_string = string[start:end] # see
# the match WITH spaces is returned.
return matched_string
with_spaces = 'a li on and a cat'
print(regex_search_ignore_space('lion', with_spaces))
# prints 'li on'
Si desea ir más allá, puede construir el objeto de coincidencia y devolverlo en su lugar, por lo que el uso de este ayudante será más útil.
Y el rendimiento de esta función también se puede optimizar, por supuesto, este ejemplo es solo para mostrar el camino hacia una solución.