C# 正则表达式:查找以下一个单词开头的相同字母结尾的单词

C# 正则表达式:查找以下一个单词开头的相同字母结尾的单词,c#,regex,C#,Regex,我试图让regex工作,但没能(可能是因为我对regex相当陌生) 以下是我想做的: 考虑一下这段文字:一个词,决斗。莱姆斯说再见 通缉赛:一个单词,决斗和 Limes说< >还是四: [单词]、“决斗”、“Limes”、“Salk”。 \b?考虑一个字母,没有数字,下划线的组合。简单的字母。4个单词可能忘了提到,LINQ是不允许的(如果我错了,请纠正我),这个解决方案使用LINQ在x= > x.Valuy。有没有办法绕过这个? string text = "One word, duel. L

我试图让regex工作,但没能(可能是因为我对regex相当陌生)

以下是我想做的:

考虑一下这段文字:一个词,决斗。莱姆斯说再见

通缉赛:一个单词决斗<酸橙再见

正如前面在标题中提到的,我希望匹配连续的单词,一个以“t”结尾(例如),另一个也以“t”开头,不区分大小写

我得到的最接近答案是这个表达式,
[^a-z][a-z]*([a-z])[^a-z]+\1[a-z]*([a-z])[^a-z]+\2[a-z]*[^a-z]
你可以使用

(?i)\b(?<w>\p{L}+)(?:\P{L}+(?<w>(\p{L})(?<=\1\P{L}+\1)\p{L}*))+\b
A:

string text=“一个字,决斗。莱姆斯说再见。”;

字符串模式=@“\b(?\p{L}+”(?(\p{L})(?如果一个单词至少由2个字符a-z组成,您可以使用2个捕获组,交替使用正向前瞻来检查下一个单词是否以最后一个字符开头,或者前一个单词是否以最后一个字符结尾,当前单词是否以最后一个字符开头

启用不区分大小写匹配时:

\b([a-z])[a-z]*([a-z])\b(?:(?=[,.]? \2)|(?<=\1 \1[a-z]+))

([AZ])[B(?[],[.]?2)](你可以试试这个ReXEX代码)\W+(\w)\W+\\W\+W/<代码>你是否考虑了字母、数字、下划线或只是字母/符号的组合?因此,有两个预期匹配的、正确的“代码”、“决斗< /代码>和<代码> Limes说< <代码> >还是四:<代码> [单词]、“决斗”、“Limes”、“Salk”。<代码> \b?考虑一个字母,没有数字,下划线的组合。简单的字母。4个单词可能忘了提到,LINQ是不允许的(如果我错了,请纠正我),这个解决方案使用LINQ在x= > x.Valuy。有没有办法绕过这个?
string text = "One word, duel. Limes said bye.";
string pattern = @"\b(?<w>\p{L}+)(?:\P{L}+(?<w>(\p{L})(?<=\1\P{L}+\1)\p{L}*))+\b";
Match result = Regex.Match(text, pattern, RegexOptions.IgnoreCase);
List<string> output = new List<string>();
if (result.Success) 
{
    foreach (Capture c in result.Groups["w"].Captures)
        output.Add(c.Value);
}
Console.WriteLine(string.Join(", ", output));
\b([a-z])[a-z]*([a-z])\b(?:(?=[,.]? \2)|(?<=\1 \1[a-z]+))