Tôi đang sử dụng python 2.6 và cố gắng tìm một loạt các ký tự lặp lại trong chuỗi, giả sử một loạt các số n
, ví dụ: nnnnnnnABCnnnnnnnnnDEF
. Ở bất kỳ nơi nào của chuỗi, số lượng của n
có thể thay đổi.Regex, tìm mẫu chỉ ở giữa chuỗi
Nếu tôi xây dựng một regex như thế này:
re.findall(r'^(((?i)n)\2{2,})', s)
,
Tôi có thể tìm lần xuất hiện của case-insensitive n
's duy nhất trong đầu của chuỗi, mà là tốt. Nếu tôi làm điều đó như thế này:
re.findall(r'(((?i)n)\2{2,}$)', s)
,
tôi có thể phát hiện những người duy nhất ở cuối dãy. Nhưng những gì về chỉ ở giữa? Lúc đầu, tôi đã nghĩ đến việc sử dụng re.findall(r'(((?i)n)\2{2,})', s)
và hai regex trước đây (-ices?) Để kiểm tra độ dài của danh sách trả về và sự hiện diện của n
ở đầu hoặc cuối chuỗi và thực hiện các phép kiểm tra lô-gic , nhưng nó trở thành một sự lộn xộn nếu người khác rất nhanh chóng.
Sau đó, tôi đã cố gắng re.findall(r'(?!^)(((?i)n)\2{2,})', s)
, mà dường như exlude sự bắt đầu tốt nhưng (?!$)
hoặc (?!\z)
vào cuối regex chỉ loại trừ cuối cùng n
trong ABCnnnn
. Cuối cùng, tôi đã cố gắng re.findall(r'(?!^)(((?i)n)\2{2,})\w+', s)
mà dường như đôi khi làm việc, nhưng tôi nhận được kết quả lạ ở những người khác. Có vẻ như tôi cần một người nhìn hoặc trông có vẻ ngoài, nhưng tôi không thể quấn đầu quanh họ được.
Thử [ '(<^?!) ((N) \ 2 {2,})' (
có gì sai với '((? I) n) \ 1 {2,}' https://regex101.com/r/oT6vZ1/1? –
hoặc '\ B (?