2012-11-26 95 views
0
String testString = "Some text F4LE8AWMF87E and again some text"; 
Match myMatch = Regex.Match(testString, "\b(?=[a-zA-Z]*[0-9])(?=[0-9]*[a-zA-Z])[0-9a-zA-Z]{12,}\b"); 
myLabel.Text = testString.Substring(myMatch.Index, myMatch.Length); 

myLabel現在應該顯示「F4LE8AWMF87E」,但它沒有12個字符#得到字符串。正則表達式的C包含至少一個數字,字母

出了什麼問題?

+4

F4LE8AWMF87只有11個字符。 – dwo

+0

好吧,我的壞。我只是改變了它。它仍然不起作用。 – SoBiT

+0

我認爲用老的循環來實現要容易得多。只需通過字邊界'\ b'分割字符串,然後迭代計算字母和數字出現次數的片段。 – J0HN

回答

1

您必須在字符串文字中轉義字符'\'。

String testString = "Some text F4LE8AWMF87E and again some text"; 
Match myMatch = Regex.Match(testString, @"\b(?=[a-zA-Z]*[0-9])(?=[0-9]*[a-zA-Z])[0-9a-zA-Z]{12,}\b"); 
myLabel.Text = myMatch.Value; 
+0

給出空字符串,所以它不起作用。你有沒有嘗試啓動它? – J0HN

+0

@ J0HN編輯,再次檢查。 – deerchao

+0

現在,它的工作,謝謝。 – SoBiT

0

請嘗試以下請:在Rublar

參考儘管C#逃逸,使細微的差別。你可以測試它。我相信你,如果你有在正則表達式的情況下,這將使它更好:)

String testString = "Some text F4LE8AWMF87 and again some text"; 
    Match myMatch = 
    Regex.Match(testString, "\b[a-zA-Z\d]{11,12}\b"); 
    myLabel.Text = testString.Substring(myMatch.Index, myMatch.Length); 
+0

已經有了答案,你只需要在C#中用@:D來轉義斜線。 – bonCodigo

相關問題