C# 5个字符的正则表达式匹配序列

C# 5个字符的正则表达式匹配序列,c#,regex,C#,Regex,我想要一个c#正则表达式来确定一个字符串在定义的序列中是否包含5个以上的字符 示例:如果序列是字母表,那么“ghijk”将为true,而“lmn”将为false 编辑:序列需要有序。根据上面的示例,“ghijz”将返回false。您不一定需要正则表达式来完成此操作: [a-zA-Z]{5,} bool IsInSequence(string str, string sequence) { return str != null && str.Length >= 5

我想要一个c#正则表达式来确定一个字符串在定义的序列中是否包含5个以上的字符

示例:如果序列是字母表,那么“ghijk”将为true,而“lmn”将为false


编辑:序列需要有序。根据上面的示例,“ghijz”将返回false。

您不一定需要正则表达式来完成此操作:

[a-zA-Z]{5,}
bool IsInSequence(string str, string sequence)
{
    return str != null && str.Length >= 5 && sequence.Contains(str);
}
除非我遗漏了您在这里试图完成的内容。

使用
Contains()
而不是正则表达式:

string sequence = "abcdef"
bool match = ("abcdefghijklmnopqrstuvwxyz".contains(sequence) 
                                     && sequence.Length >= 5);

你最好不要使用正则表达式来完成你正在做的事情。

如果序列需要有序,那么你所寻找的东西就不能用正则表达式来完成。正则表达式只能在字符上执行模式匹配,不能在序列上放置含义(如顺序)

就像我会做的那样。。。修复了一些小问题,例如为C#/.NET添加空检查和方法资本化。我希望它是一个正则表达式,因为代码的其余部分是正则表达式。我可以理解您对一致性的渴望,但在这种情况下,我认为无正则表达式的解决方案更干净、更简单。@Thad:在这种情况下,考虑将其余代码块更改为不需要不必要的正则表达式。不必要地使用正则表达式是不好的做法。字符串的内容必须包含序列中的序列元素,还是只包含任何元素?换句话说,如果序列是字母表,字符串“pdrqa”是否匹配?pdrqa将为false,因为它与序列的顺序不匹配。这将匹配任何包含5个或更多字母的字符串,但OP需要该字符串与序列的一段匹配,这意味着该字符串必须按顺序排列。