Good question and there is good answer here.
With Positive Lookahead
I guess,
(?is)\w*(\w)(?= (\1)\w*)
might be somewhat closer, there might be edge cases though, for which you'd probably want to look into the positive lookahead here in this block:
(?= (\1)\w*)
With Positive Lookbehind
You can also lookbehind, and capture things, if/as you wish and code, maybe with some expression similar to:
(?is)(?<=([a-z])\s)(\1)([a-z]*)
Test
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?is)\w*(\w)(?= (\1)\w*)";
string input = @"word dark king glow we end hello bye low wing
word Dark King Glow We End hello bye LoW wing";
foreach (Match m in Regex.Matches(input, pattern))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
If you wish to simplify/modify/explore the expression, it's been explained on the top right panel of regex101.com. If you'd like, you can also watch in this link, how it would match against some sample inputs.

Complexity
Lookarounds in general are not really complexity-friendly methods, yet I can't think of a better way now.