Hm…cứ print hết ra là hiểu vấn đề thôi. Mình sẽ đi từ trên xuống theo code bạn paste nhé 
Giải sử ta có 3 tập hợp
- Các chữ cái từ A -> Z
- Các chữ cái từ a -> z
- Các chữ số từ 0 -> 9
Mình sẽ gọi cái tập hợp gồm 3 tập hợp này là domain nhé.
def is_check(string):
charRe = re.compile(r'[a-zA-Z0-9]')
string = charRe.search(string)
return bool(string
Cái này dùng để kiếm trong chuỗi string của bạn có kí tự nào thuộc domain hay không. Nếu so với đề bài của bạn thì nó trật lất, vì chỉ cần có một kí tự thuộc domain thôi là coi như True. Đi ngược lại việc kiểm tra xem một chuỗi chỉ chứa
một tập ký tự nhất định (a-z, A-Z và 0-9) hay không
def is_check(string):
charRe = re.compile(r'[^a-zA-Z0-9.]')
string = charRe.search(string)
return not bool(string)
Mình sẽ chia làm hai phần, phần đầu tiên
charRe = re.compile(r'[a-zA-Z0-9.]')
string = charRe.search(string)
Đoạn này khi search, nó sẽ tìm kiếm những kí tự thuộc domain và dấu '.'
. Dấu chấm ở đây không phải kiểu dấu chấm đại diện cho bất kì kí tự nào đâu. Nó là dấu '.'
Và khi
charRe = re.compile(r'[^a-zA-Z0-9.]')
Có nghĩa là bạn đi phủ định lại cái đó bằng ‘^’. Còn nếu đặt ở ngoài là báo cho nó tìm ở đầu chuỗi
Tóm gọn lại nó sẽ tìm kiếm những kí tự KHÔNG thuộc domain và dấu '.'
return not bool(string)
Đoạn này thì dễ hiểu, nếu trên tìm được thì kết quả là False, tìm không được là True.
Cuối cùng thì cái đoạn code trên ấy, nó là một cách tuyệt vời để hoàn thành đề bài của bạn. Vì nó tìm phủ đinh nên sẽ tìm rộng hơn cái ban đầu của bạn 