检查字符串中是否包含大写字母“inside”
我正在为单词表过滤器工作。检查字符串中是否包含大写字母“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#解决方案,现在我想有一个正则表达式用于相同的目的,从中学习。
非常感谢您的回答!非常感谢您的帮助! –
你知道不要求接受答案。你在这里已经足够长,知道这一点。 –
@PatrickHofman它没有乞讨......它像是关闭这个问题......这个问题的逻辑结束.......... – vks
你可以把这个表达式:
^[a-zA-Z][a-z]{3,}
- 第一个
^
是字符串的开始 -
[a-zA-Z]
匹配一个字母,不管大写或小写 -
[a-z]{3,}
至少三个小写字母。
这个简单的正则表达式应该做的:
^[A-Za-z][a-z]{3,}$
它失败在没有开始后任何大写字母。它允许在总共至少4个字符,因为第一部分完全匹配一个字符,第二部分至少3.合并的,应至少4
确实 - 一个可怜的downvote! :( – Nathan
[Bullet point 2](http://meta.stackexchange.com/q/17204) –
@PatrickHofman享受您的+8声望:p –
一个正则表达式就足够了:
^[A-Za-z][a-z]{3,}$
-
^
表示文本的开始, - 后跟一个大写或小写字母,
- 其次是三个或更多小写字母
- 后面跟着t ext(
$
),即在小写字母之后没有其他字母。
非常感谢你的回答并解释 –
您可以使用'^ [A-Z]'在字符串的开头找到一个大写字母。甚至是'@“^ \ p {Lu}”' –
'^ [A-Za-z] [a-z] {3,} $'有什么问题? – xanatos
为什么你发布这个问题两次?如果提供的解决方案不适用于您,expalin为什么不会再次发布相同的问题。 – HimBromBeere