Этот подход можно использовать для автоматизации этого (следующее примерное решение находится на Python, хотя, очевидно, его можно портировать на любой язык):
вы можете заранее удалить пробелы и сохранить позиции непробельных символов, чтобы вы могли использовать их позже, чтобы найти совпадающие позиции границ строки в исходной строке, как показано ниже:
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'
Если вы хотите пойти дальше, вы можете создать объект соответствия и вместо этого вернуть его, так что использование этого помощника будет более удобным.
И, конечно, производительность этой функции также можно оптимизировать, этот пример просто показывает путь к решению.