này sẽ trở lại 4
như bạn mong đợi:
Regex.Matches("020202020", @"0(?=20)").Count;
Con số nhìn thấy khớp với số 20
mà không cần tiêu thụ, do đó, lần thử đối sánh tiếp theo sẽ bắt đầu ở vị trí sau 0
đầu tiên.Bạn thậm chí có thể làm toàn bộ regex như một lookahead:
Regex.Matches("020202020", @"(?=020)").Count;
Động cơ regex tự động va vào trước một vị trí mỗi khi nó khớp với độ dài bằng 0. Vì vậy, để tìm tất cả chạy của ba 2
's hoặc bốn 2
' s, bạn có thể sử dụng:
Regex.Matches("22222222", @"(?=222)").Count; // 6
... và:
Regex.Matches("22222222", @"(?=2222)").Count; // 5
EDIT: Nhìn qua câu hỏi của bạn một lần nữa, nó xảy ra với tôi bạn có thể tìm kiếm 2
's xen kẽ với 0
' s
Regex.Matches("020202020", @"(?=20202)").Count; // 2
Nếu bạn không biết có bao nhiêu 0
's sẽ có, bạn có thể sử dụng này:
Regex.Matches("020202020", @"(?=20*20*2)").Count; // 2
Và tất nhiên, bạn có thể sử dụng lượng hóa để giảm sự lặp lại trong regex:
Regex.Matches("020202020", @"(?=2(?:0*2){2})").Count; // 2
Câu hỏi của bạn gây hiểu lầm. Bạn có muốn kết hợp các chuỗi '2'-s liên tiếp hoặc tùy ý không? – krlmlr