我正在为单词表过滤器工作。检查字符串中是否包含大写字母“inside”
因此,这里有一些例子的话,这是词表内:
var words = new List<string>();
var finalList = new List<string>();
words.Add("McLaren");//false
words.Add("Nissan");//true
words.Add("BMW");//false
words.Add("Subaru");//true
words.Add("Maserati");//true
words.Add("Mercedes Benz");//false
words.Add("Volkswagen");//true
words.Add("audi");//true
words.Add("Alfa Romeo");//false
words.Add("rollsRoyce");//false
words.Add("drive");//true
对于这个任务,我需要一个正则表达式只接受字母(无特殊字符,无空格)。单词必须包含至少4个字符以无限制。它应该只接受字符串开头的大写字母。这就是我的问题所在。
这里是我的代码:
var WordRegex = new Regex("^[a-zA-Z]{4,}$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
var secondRegex = new Regex("([A-Z]{1})");
foreach (var word in words)
{
if (WordRegex.IsMatch(word) && secondRegex.Matches(word).Count == 1)
{
finalList.Add(word);
}
}
我的问题是,这个词“小写”进入finallist我不想要的。如果大写字母位于字符串的开头,我只希望它进入finalList。
我的第二个正则表达式阻止像'迈凯轮'这样的词,因为它有两个大写字母。
还是那句话:
- 迈凯轮< ---不应该接受(二大写字母)
- 迈凯轮< ---不应该接受(大写字母 “内” *字符串)
- 麦克拉伦 < ---应该接受(在启动大写)
- 迈凯轮 < ---也应该接受(没有大写字母)
*我指的是里面什么是,如果有任何大写字母没有开始或结束时。
previous version of my question只给出了C#解决方案,现在我想有一个正则表达式用于相同的目的,从中学习。
您可以使用'^ [A-Z]'在字符串的开头找到一个大写字母。甚至是'@“^ \ p {Lu}”' –
'^ [A-Za-z] [a-z] {3,} $'有什么问题? – xanatos
为什么你发布这个问题两次?如果提供的解决方案不适用于您,expalin为什么不会再次发布相同的问题。 – HimBromBeere