我有這樣的正則表達式,用於查找任何置換與一個A,一個B和兩個C的.NET正則表達式overlaping匹配服用最後一個字符
(?:(?<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}))
^ ^
,我們不得不在這個例子中
1. ABCC
2. BCCA
3. CCAB
4. CABC
7. CABC
10. CABC
15. ABCC
由於stribizhev幫助在此之前的帖子7場比賽: .NET Regex number of overlaping matches
現在我需要找到的所有可能的組合序列,例如,ABC,但是3次並且重疊一個字符。
例如,對於下面的順序:
AABCBACBCCAACCB
這將有序列中的位置1
Pos 1. ABC
Pos 3. CBA
Pos 5. ACB
所以看起來我們有出現3次ABC的任意組合序列但是將第一個角色作爲以前比賽的最後一個角色。
我希望我解釋以及..
我怎樣才能做到這一點?
你需要這樣做與正則表達式?即使有可能,我懷疑迭代字符串並計算相關字符會更快更清晰。 – LukeH
@sln看起來像OP在上例中使用基於零的「Pos」。 – PetSerAl
@PetSerAl - 對吧,我會失明。 – sln