我需要匹配一个以大写字母开头的模式,后跟一系列相同的小写字母,然后以相同的字母再次大写。
应该匹配:
XxxxX
NnN
YyyyyyyY
不匹配:
XyyyX
XxxxB
XyyyZ
我知道如何使用反向引用匹配两个大写字母,但我不知道如何捕获字母需要相同但不同情况的中间部分。
感谢。
答案 0 :(得分:1)
您无法在单个正则表达式中完成所有操作。您可以使用正则表达式测试大部分内容,但需要单独测试以查看大写和小写字母是否相同:
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
}
注意:这里我假设你只想要A-Z。
答案 1 :(得分:0)
这是非 -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");
}