我从Regex开始(总是在网上使用我需要的那些)
我需要一些给出输入的东西:
Input: AAABBBCCC
Index: 012345678
正则表达式匹配将是:
我现在的正则表达式是(A{2}|B{2}|C{2})
。
这不是我真正的问题,但是对于As,Bs和Cs我有不同的工作方式。
我认为我应该使用一些look behind
运算符,但尝试:((A{2}|B{2}|C{2})$1)
或(?<=(A{2}|B{2}|C{2}))
将不起作用。
注意:我的问题在于c#,如果重要
答案 0 :(得分:5)
你确实需要环顾,但我会使用positive lookahead assertion:
(?=(([ABC])\2))
您的匹配结果将位于每个match.Groups(1)
对象的match
中。
<强>解释强>
(?= # 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
更简单的解决方案:
(?=(AA|BB|CC))