Цей підхід можна використовувати для автоматизації цього (наступне зразкове рішення знаходиться в 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'
Якщо ви хочете піти далі, ви можете сконструювати об’єкт відповідності та повернути його замість цього, тому використання цього помічника буде більш зручним.
І ефективність цієї функції, звичайно, також може бути оптимізована. Цей приклад - просто показати шлях до рішення.