2017-02-21 61 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

工作非常感谢你 –