2016-02-05 140 views
-2

我正在为单词表过滤器工作。检查字符串中是否包含大写字母“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#解决方案,现在我想有一个正则表达式用于相同的目的,从中学习。

+0

您可以使用'^ [A-Z]'在字符串的开头找到一个大写字母。甚至是'@“^ \ p {Lu}”' –

+3

'^ [A-Za-z] [a-z] {3,} $'有什么问题? – xanatos

+0

为什么你发布这个问题两次?如果提供的解决方案不适用于您,expalin为什么不会再次发布相同的问题。 – HimBromBeere

回答

1
^(?:[A-Z]|[a-z])[a-z]{3,}$ 

您可以使用this.See演示相匹配。

https://regex101.com/r/eB8xU8/2

+1

非常感谢您的回答!非常感谢您的帮助! –

+2

你知道不要求接受答案。你在这里已经足够长,知道这一点。 –

+0

@PatrickHofman它没有乞讨......它像是关闭这个问题......这个问题的逻辑结束.......... – vks

0

你可以把这个表达式:

^[a-zA-Z][a-z]{3,} 
  • 第一个^是字符串的开始
  • [a-zA-Z]匹配一个字母,不管大写或小写
  • [a-z]{3,}至少三个小写字母。
2

这个简单的正则表达式应该做的:

^[A-Za-z][a-z]{3,}$ 

它失败在没有开始后任何大写字母。它允许在总共至少4个字符,因为第一部分完全匹配一个字符,第二部分至少3.合并的,应至少4

+0

确实 - 一个可怜的downvote! :( – Nathan

+1

[Bullet point 2](http://meta.stackexchange.com/q/17204) –

+0

@PatrickHofman享受您的+8声望:p –

3

一个正则表达式就足够了:

^[A-Za-z][a-z]{3,}$ 
  • ^表示文本的开始,
  • 后跟一个大写或小写字母,
  • 其次是三个或更多小写字母
  • 后面跟着t ext($),即在小写字母之后没有其他字母。
+0

非常感谢你的回答并解释 –

相关问题