2014-12-27 15 views
0

有人可以啓發我爲什麼以下的正則表達式不能在C#中工作嗎? 謝謝。在C中的具體正則表達式#

Regex 101

我試着讓raudi06了以下字符串(如鏈接解釋): 「\ n http://dsde.innogamescdn.com/8.30.1/23852/graphic/welcome/ player_points.png 3ba0c \ 「> \ n raudi06 \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t」 的

這裏談到的代碼:

 Match match = new Regex(@"[^>]+>\\n\s+(.*?)\\").Match(playerText); 
     return match.Groups[1].Value; 

該值是一個空字符串,與regex101.com上的正則表達式相反。 這是du E到C#正則表達式的味道?我對正則表達式瞭解不多,希望也許你知道這些具體細節。

預先感謝您!

+0

在您的輸入中是'\ n'是文字\,'n'字符還是單個換行符? –

+0

@Avinash Raj我不確定,但我認爲這是字面的。我從Visual Studio變量監視窗口中複製它。 – Zackline

回答

0

實際上,空格字符(\ n,\ t)不是字面的。 我通過在Visual Studio的監視窗口中右鍵單擊該變量並選擇值選項,發現沒有文字空白字符的字符串,發現了這一點。

[^>]+>\s+([^\s]*) 

工作是否匹配字符串。 謝謝你的提示,Avinash Raj。

0

試試這個來代替:

System.Text.RegularExpressions.Regex.Match(input, "[^>]+>\s+(.*?)\s", System.Text.RegularExpressions.RegexOptions.Multiline) 
0

當你看到\ n和在字符串中的\ T,他們是換行和標籤只是單一卡拉科特佔位符。這意味着你將永遠找不到\ n通過尋找一個\和一個n。

您使用的模式將專門查找反斜槓,後跟字面n。要改變這種情況,只需刪除其中一個反斜槓,而不是\ n

下一個挑戰是您的字符串的結束標準。在你的模式中,你正在尋找一個反斜槓(\),但沒有,只是選項卡(\ t)。這一個你可以改變\ t它應該工作。

Match match = new Regex(@"[^>]+>\n\s+(.*?)\t").Match(playerText);