我需要匹配以大写字母开头的模式相匹配的反向引用正则表达式,后面是一系列以小写同一封信中,然后用相同的字母大写结束再次。我可以创建具有相反的情况
应符合:
XxxxX
NnN
YyyyyyyY
不应与:
XyyyX
XxxxB
XyyyZ
我知道如何搭配使用反向引用的两个大写字母,但我不知道如何捕捉中间部分,其中这封信必须是相同的,但情况不同。
谢谢。
我需要匹配以大写字母开头的模式相匹配的反向引用正则表达式,后面是一系列以小写同一封信中,然后用相同的字母大写结束再次。我可以创建具有相反的情况
应符合:
XxxxX
NnN
YyyyyyyY
不应与:
XyyyX
XxxxB
XyyyZ
我知道如何搭配使用反向引用的两个大写字母,但我不知道如何捕捉中间部分,其中这封信必须是相同的,但情况不同。
谢谢。
你不能做到这一切在一个单一的正则表达式。您可以使用正则表达式测试大部分,但你需要一个单独的测试,看看是否大写和小写字母是相同的:
Match match = Regex.Match(s, @"^([A-Z])([a-z])+\1$");
if (match.Success && match.Groups[1].Value.Equals(match.Groups[2].Value,
StringComparison.InvariantCultureIgnoreCase)) {
// OK
}
注:在这里,我假设你只想要一个-Z。
这里是一个非 -regex答案。
if (char.IsUpper(subjectString[0])
&& char.IsLetter(subjectString[0])
&& subjectString[0].Equals(subjectString[subjectString.Length - 1])
&& subjectString.Substring(1, subjectString.Length - 2).All(x => x.Equals(char.ToLower(subjectString[0]))))
{
Console.WriteLine("Success");
}
我认为可能是这种情况。感谢你的回答。我没有想到将“+”放在分组之外,这使得平等测试更容易。 – NerdFury