正则表达式匹配SomeWord_SomeSecondWord_SomeThirdWord

时间:2011-04-19 19:53:56

标签: c# regex

好的,所以我是这个星球上绝对最差的正则表达作家。认为这个伟大的社区可以帮助我在15分钟后把我的头从桌子上摔下来,无处可去。

我知道这很简单,但我需要一个符合以下条件的正则表达式:

SomeWord_SomeSecondWord

SomeWord_SomeSecondWord_SomeThirdWord

用简单的英语:

  • 以下划线分隔的两三个字(字母组)。
  • 每个字块必须以大写字母开头,至少包含两个字符且仅包含字母a-z。

非常感谢任何帮助。我正在尝试编写一个正则表达式来匹配StyleCop / ReSharper验证的单元测试方法名称。对于正则表达式,我有绝对的心理障碍。

1 个答案:

答案 0 :(得分:4)

试试这个:

@"^[A-Z][a-zA-Z]+(?:_[A-Z][a-zA-Z]+){1,2}$"

[A-Z][a-zA-Z]+确保以大写字母开头,+的使用将确保至少有一个其他字符,满足最少2个字符的要求。

这是一个实际的例子:

string[] inputs =
{
    "SomeWord", "SomeFirstWord_SomeSecondWord",
    "SomeWord_SomeSecondWord_SomeThirdWord", "SomeWord_Some2ndWord"
};

string pattern = @"^[A-Z][a-zA-Z]+(?:_[A-Z][a-zA-Z]+){1,2}$";

foreach (var input in inputs)
{
    Console.WriteLine("{0}: {1}", Regex.IsMatch(input, pattern), input);
}