Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 匹配SomeWord\u SomeSecondWord\u SomeThirdWord的正则表达式_C#_Regex - Fatal编程技术网

C# 匹配SomeWord\u SomeSecondWord\u SomeThirdWord的正则表达式

C# 匹配SomeWord\u SomeSecondWord\u SomeThirdWord的正则表达式,c#,regex,C#,Regex,我是这个星球上最差的正则表达式编写者。我想这个伟大的社区可以帮助我,在15分钟的时间里,把我的头从桌子上摔下来,然后一事无成 我知道这很简单,但我需要一个符合以下条件的正则表达式: SomeWord_SomeSecondWord 或 SomeWord_SomeSecondWord_SomeThirdWord 通俗易懂的英语: 用下划线分隔的两个或三个单词(一组字母) 每个字块必须以大写字母开头,至少包含两个字符,并且仅包含字母a-z 任何帮助都将不胜感激。我正在尝试编写一个正则表达式,以

我是这个星球上最差的正则表达式编写者。我想这个伟大的社区可以帮助我,在15分钟的时间里,把我的头从桌子上摔下来,然后一事无成

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

SomeWord_SomeSecondWord

SomeWord_SomeSecondWord_SomeThirdWord
通俗易懂的英语:

  • 用下划线分隔的两个或三个单词(一组字母)
  • 每个字块必须以大写字母开头,至少包含两个字符,并且仅包含字母a-z
任何帮助都将不胜感激。我正在尝试编写一个正则表达式,以匹配StyleCop/ReSharper验证的单元测试方法名称。说到正则表达式,我有一个绝对的心理障碍。

试试这个:

@"^[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);
}
试试这个:

@"^[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);
}

至少匹配两个字符不应该是
+
而不是
*
。@Brian是的,没错。我在第一篇帖子发布几秒钟后更新了它:)+1这是个好答案,但没有必要使用
惰性修饰符。它不应该是
+
而不是
*
来匹配至少两个字符。@Brian是的,没错。我在第一篇帖子发表几秒钟后更新了它:)+1这是一个很好的答案,但是没有必要使用
惰性修饰符。这本书《掌握正则表达式》真的帮了我大忙。理解“正则表达式字母表”中的一小部分核心“字母”可以帮助您处理大多数模式。这本书“掌握正则表达式”真的对我很有帮助。理解“正则表达式字母表”中的少量核心“字母”可以帮助您处理大多数模式。