2017-08-04 25 views
5

Tôi muốn đối sánh các mẫu ký tự chữ thường xen kẽ.regex - mẫu đối sánh của các ký tự thay thế

ababababa -> match 

Tôi cố gắng này

([a-z][a-z])+[a-z] 

nhưng đây sẽ là một trận đấu quá

ababxyaba 
+0

"Xen kẽ" hay chỉ "số lẻ" của ký tự? Nếu sau này, kèm theo mẫu với các neo '' 'và' $ '. –

+0

ý của bạn là gì bằng cách xen kẽ các ký tự chữ thường? – marvel308

+0

một chuỗi có chứa một sự thay đổi của hai nhân vật giống nhau -> xyxyxyxy nhưng không xyxyxyabxyxy – cmplx96

Trả lời

10

Bạn có thể sử dụng regex này với 2 back-tài liệu tham khảo để phù hợp xen kẽ chữ thường:

^([a-z])(?!\1)([a-z])(?:\1\2)*\1?$ 

RegEx Demo

RegEx Breakup:

  • ^: Bắt đầu
  • ([a-z]): Phù hợp với chữ cái đầu tiên trong việc nắm bắt nhóm # 1
  • (?!\1): lookahead để đảm bảo chúng không phù hợp với cùng một lá thư nữa
  • ([a-z]): Khớp chữ thứ hai trong nhóm chụp # 3
  • (?:\1\2)*: Phù hợp với không hoặc nhiều cặp đầu tiên và thứ hai thư
  • \1?: Cho kết quả tùy chọn chữ cái đầu tiên trước khi kết thúc
  • $: End
+1

Nó khớp với 'aaaaaaaaaa' quá – ikleschenkov

+0

Bạn nói đúng, nó đã được sửa ngay bây giờ. – anubhava

Các vấn đề liên quan