2011-11-08 56 views
3

我有以下格式C#正則表達式,無法識別的轉義序列

_AUTO_(123,SomeString) 

字符串和我想從使用正則表達式上面的字符串中提取123。正在使用的正則表達式是:

const string pattern = @"\_AUTO\_\(?<number>(\d)+\,"; 
    foreach(Match match in Regex.Matches(line, pattern)) { 
     Console.WriteLine(match.Groups["number"].Value); 
    } 

我遇到無法識別的轉義序列\ _錯誤異常。 有人可以請指出我做錯了什麼嗎?

謝謝!

+2

不是例外情況是否可以解釋? '_'不是逃生序列,_不能逃避它!_ –

+0

常識是什麼告訴你世界是平坦的? – Joey

+1

這對我來說並不明顯,即使有Exception消息。我仍然不確定文檔[這裏](https://msdn.microsoft.com/en-us/library/az24scfc(v = vs.110).aspx#character_escapes)或[here](https:/ /msdn.microsoft.com/en-us/library/4edbef7e(v=vs.110).aspx)告訴我「\ _」是不允許的。它允許Javascript正則表達式。即使被接受的答案是「你不需要逃避下劃線」。它不應該說,「你**不能**逃避下劃線」? –

回答

10

您不需要轉義下劃線(或者就此而言,逗號)。更改您的正則表達式爲:

@"_AUTO_\(?<number>(\d)+," 
+0

感謝您的回覆丹。例外消失了,但現在不打印比賽。 :-( – test123

+1

我想你和我也是這樣命名的捕獲是錯的,試試這個:'@「_ AUTO _ \((?(\ d)+),'' – Dan

+0

完美,非常感謝! – test123