У меня есть эта RegEx, который находит любую перестановку с одним А, один В и два С-х.NET Regex перекрывающихся совпадает с последним символом
(?:(?<A>A)|(?<B>B)|(?<C>C)){4}(?<-A>)(?<-B>)(?<-C>){2}
, например, для этой комбинации мы имеем 3 матча (позиции 1, 7, 15)
ABCCABCABCABCAABCC
Если добавить опережения утверждения можно подсчитать количество совпадений, начиная со следующей позицией, а не в следующей позиции после полной последовательности
(?=(?<value>(?:(?<A>A)|(?<B>B)|(?<C>C)){4}(?<-A>)(?<-B>)(?<-C>){2}))
^ ^
И мы имеем 7 матчей в этом примере
1. ABCC
2. BCCA
3. CCAB
4. CABC
7. CABC
10. CABC
15. ABCC
Как stribizhev помогли в этом предыдущем посте: .NET Regex number of overlaping matches
Теперь мне нужно найти последовательность всех возможных комбинаций, например, , ABC, но 3 раза и перекрытие одного символа.
Например, для следующей последовательности:
AABCBACBCCAACCB
Это будет иметь последовательность в положении 1
Pos 1. ABC
Pos 3. CBA
Pos 5. ACB
Так выглядит последовательность, где мы имеем любую комбинацию ABC, которая появляется в 3 раза в строке, но взяв в качестве первого символа последний из предыдущего совпадения.
Я надеюсь, что я объяснил хорошо ..
Как я могу это сделать?
вам нужно сделать, это делать с регулярным выражением? Даже если это возможно, я подозреваю, что повторение строки и подсчет соответствующих символов будет более быстрым и чистым. – LukeH
@sln Похоже, что OP использует ноль на основе 'Pos' для последнего примера. – PetSerAl
@PetSerAl - прямо ты, я ослеп. – sln