Cách tiếp cận này có thể được sử dụng để tự động hóa việc này (giải pháp mẫu sau đây là trong python, mặc dù rõ ràng nó có thể được chuyển sang bất kỳ ngôn ngữ nào):
bạn có thể loại bỏ khoảng trắng trước VÀ lưu vị trí của các ký tự không phải khoảng trắng để bạn có thể sử dụng chúng sau này để tìm ra vị trí ranh giới của chuỗi đã khớp trong chuỗi gốc như sau:
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'
Nếu bạn muốn đi xa hơn, bạn có thể xây dựng đối tượng khớp và trả về thay thế, vì vậy việc sử dụng trình trợ giúp này sẽ tiện dụng hơn.
Và hiệu suất của chức năng này tất nhiên cũng có thể được tối ưu hóa, ví dụ này chỉ là để hiển thị đường dẫn đến một giải pháp.