2017-02-21 57 views
1

這個正則表達式在線regex testers工作,但是當我嘗試這段代碼正則表達式不匹配。正則表達式匹配在線,但不是在C#代碼

Regex regex = new Regex(@"^\.lnr-(.*)\:before \{$", RegexOptions.Compiled | RegexOptions.Multiline); 

     string css = System.IO.File.ReadAllText(Server.MapPath("/linearicons-free.css")); 
     foreach (Match match in regex.Matches(css)) 
     { 
      //doing sth 
     } 

我錯過了什麼?

+1

請發表[MCVE]包括字符串,這是正則表達式針對你希望它成功測試,但它失敗。 –

+0

看起來'$'匹配'\ n'的開頭,但由於該文件同時包含'\ r \ n',所以您需要在模式中明確提到這一點。試試這種模式:'@「^ \。lnr - (。*)\:在\ {\ r $」'或'@「^ \之前:\ n。 - (。*)\:\ {\ s?$」 。這似乎記錄下[正則表達式中的錨](https://msdn.microsoft.com/en-us/library/h5181w5w(v = vs.110).aspx)。 –

+0

字符串輸入是在線正則表達式演示鏈接。但也可以從http://demos.themecycle.com/eduhtml/edu/css/linearicons-free.css達到 –

回答

2

C#解析字符串時,末尾有一個\n。 所以因爲你期待最後charcater是{

換着花樣給^\.lnr-(.*):before \{\s$,它應該工作的模式^\.lnr-(.*):before \{$失敗。

可以測試.NET正則表達式here而不是regex101.com

+0

工作非常感謝你 –