Look Behind Regex

c#, regex

Solution

You do need lookaround but I'd use a positive lookahead assertion for that:

(?=(([ABC])\2))

Your match results will be in `match.Groups(1)` of each `match` object.

Explanation:

(?=       # Look ahead to check that the following matches:
 (        # Match and capture in group number 1:
  (       # Match and capture in group number 2:
   [ABC]  # Any letter A, B or C
  )       # End of capturing group 2
  \2      # Now match that same letter again.
 )        # End of group 1. It now contains AA, BB or CC
)         # End of lookahead assertion

A simpler solution:

(?=(AA|BB|CC))

Problem

I'm starting with Regex (always used from the net the ones I needed) I need something that given the input: ``` Input: AAABBBCCC Index: 012345678 ``` The regex matches would be: - AA from 0,1 - AA from 1,2 (even though the A from 1 is already consumed) - BB from 3,4 - BB from 4,5 (even though the B from 4 is already consumed) - CC from 6,7 - CC from 7,8 (even though the B from 7 is already consumed) The regex I have now is `(A{2}|B{2}|C{2})`. It is not my real problem, but I have different workings Regexes for the As, Bs and Cs. I think that I should use some `look behind` operator but trying: `((A{2}|B{2}|C{2})$1)` or `(?<=(A{2}|B{2}|C{2}))` won't work. Here's an example. Note: My problem is in c#, if that matters

Original source