Bu yaklaşım, bunu otomatikleştirmek için kullanılabilir (aşağıdaki örnek çözüm python içindedir, ancak açıkça herhangi bir dile taşınabilir):
beyaz boşluğu önceden çıkarabilir VE boşluk olmayan karakterlerin konumlarını kaydedebilir, böylece bunları daha sonra orijinal dizedeki eşleşen dize sınır konumlarını aşağıdaki gibi bulmak için kullanabilirsiniz:
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'
Daha ileri gitmek istiyorsanız, eşleşme nesnesini oluşturabilir ve bunun yerine geri getirebilirsiniz, böylece bu yardımcının kullanımı daha kullanışlı olacaktır.
Ve bu fonksiyonun performansı elbette optimize edilebilir, bu örnek sadece bir çözüme giden yolu göstermek içindir.