2009-08-04 62 views
2

我想要一個c#正則表達式來確定一個字符串是否包含定義的序列中的5個以上的字符。正則表達式匹配5個字符的序列

示例:如果序列是字母表,那麼'ghijk'將是true,而'lmn'將是false。

編輯:序列需要按順序。從上面的例子'ghijz'將返回false。

+0

字符串的內容是否必須包含序列中的順序元素,還是僅包含任何元素?換句話說,如果序列是字母表,字符串「pdrqa」是否匹配? – 2009-08-04 17:28:45

+0

pdrqa將是錯誤的,因爲它不符合序列的順序。 – Thad 2009-08-04 17:37:42

回答

7

你不一定需要一個正則表達式來實現:

bool IsInSequence(string str, string sequence) 
{ 
    return str != null && str.Length >= 5 && sequence.Contains(str); 
} 

除非我失去了你要在這裏完成的。

3
[a-zA-Z]{5,} 
+1

這可以匹配任何5個或更多字母的字符串,但OP需要字符串來匹配序列的一部分,這意味着字符串必須按順序排列。 – 2009-08-04 17:44:34

2

使用Contains(),而不是一個正則表達式:

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

你最好沒有一個正則表達式,你在做什麼。

1

如果序列需要按順序排列,那麼用正則表達式無法完成要查找的內容。正則表達式只能對字符進行模式匹配,並且不能在序列上放置含義(例如排序)。