我一直在通过此处的示例查看如何进行类似的正则表达式匹配,但是我无法使其适合我的情况。
我有一个像ThisisMystringItsTooLong
这样的字符串,我想取回ThiMys
(大写字母的前两次出现,其后是两个小写字母)
但是,如果字符串只是Thisismystring
(只有一个大写字母),那么我只想
返回Thi
。
我尝试过([A-Z]{1})([a-z]{2}){0,1}
仅在我的比赛第一次出现的情况下(如果有两个以上的大写字母),但是我不确定如何应用第二个条件。
最佳答案
我将只使用Regex模式[A-Z][a-z]{2}
并“手动”执行其他逻辑。
public string ShortIdentifier(string longIdentifier)
{
MatchCollection matches = Regex.Matches(longIdentifier, "[A-Z][a-z]{2}");
if (matches.Count == 1) {
return matches[0].Value;
} else if (matches.Count >= 2) {
return matches[0].Value + matches[1].Value;
}
return longIdentifier.Substring(0, Math.Min(longIdentifier.Length, 6));
// Or return whatever you want when there is no match.
}
如果要返回一个大写字母,然后返回一两个小写字母,请将正则表达式更改为
[A-Z][a-z]{1,2}
。关于c# - 正则表达式匹配前两个出现的大写字母,然后匹配几个小写字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22868815/