Lưu ý: Examples provided are in Python.
Mặc dù khái niệm vẫn giữ nguyên.
'.'
là một biểu tượng phù hợp khớp với bất kỳ ký tự nào ngoại trừ ký tự dòng mới (điều này cũng có thể được ghi đè bằng re.DOTALL
đối số trong Python). Do đó, nó cũng được gọi là Wildcard .
'*'
là một bộ định lượng (xác định tần suất một phần tử có thể xảy ra). Là viết tắt của {0,} .
Điều đó có nghĩa là trận đấu bằng 0 hoặc nhiều hơn Nhóm Nhóm có trước ngôi sao có thể xảy ra bất kỳ số lần nào trong văn bản. Nó có thể hoàn toàn vắng mặt hoặc lặp đi lặp lại nhiều lần.
'?'
cũng là một định lượng . Là viết tắt của {0,1} .
Nó có nghĩa là "Kết hợp số không hoặc một trong các nhóm trước dấu hỏi này." Nó cũng có thể được hiểu là phần trước dấu chấm hỏi là tùy chọn .
ví dụ:
pattern = re.compile(r'(\d{2}-)?\d{10}')
mobile1 = pattern.search('My number is 91-9999988888')
mobile1.group()
Output: '91-9999988888'
mobile2 = pattern.search('My number is 9999988888')
mobile2.group()
Output: '9999988888'
Trong ví dụ trên '?' chỉ ra rằng hai chữ số trước nó là tùy chọn. Chúng có thể không xảy ra hoặc xảy ra nhiều nhất một lần.
Sự khác biệt giữa '.' và '?':
'.'
khớp / chấp nhận / xác minh bất kỳ ký tự đơn nào cho vị trí nó đang giữ trong biểu thức chính quy.
ví dụ:
pattern = re.compile(r'.ot')
pattern.findall('dot will identify both hot and got.')
Output: ['dot', 'hot', 'got']
'?'
khớp / xác minh sự xuất hiện 0 hoặc đơn của nhóm trước nó .
Kiểm tra ví dụ số điện thoại di động.
Cùng đi với '*'
. Nó sẽ kiểm tra không hoặc nhiều lần xuất hiện của nhóm trước nó .
Sự phối hợp:
'.*'
: Chấp nhận càng nhiều trình tự càng tốt. Cách tiếp cận tham lam .
'.*?
'Chấp nhận chuỗi khớp đầu tiên và dừng lại. Cách tiếp cận không tham lam
Để biết thêm thông tin, hãy cân nhắc đọc hai câu hỏi sau ...