2015-01-20 59 views
-4

我有點新正則表達式和C#。正則表達式不接受。在C#

我試圖建立一個工具,通過文件的例子不勝枚舉,之後retrun文件的名稱,如果使用下面的塊要經過列表

var queryMatchingFiles = 
    from file in fileList 
    where file.Extension != ".dll" && file.Extension != ".pdb" 
    let fileText = File.ReadAllText(file.FullName) 
    let matches = Regex.Matches(fileText, pattern, RegexOptions.IgnoreCase) 
    where matches.Count > 0 
    select new { 
     name = file.FullName, 
     matchedValues = 
      from Match match in matches 
      select match.Value 
    }; 
含有一定的模式,即時通訊

現在,在該文件中的pattern輸入是.htc,我知道,在一個正則表達式圓點表示的信,我試圖做的,以確保該模式被強制.htc

pattern = @"\b" + pattern + @"\b"; 

pattern = string.Format(@"\b" + pattern + @"\b"); 

它仍然不接受在.htc點,任何想法如何推翻這個問題?

編輯:我不是找文件擴展,什麼即時試圖做的是通過HTML和文本文件的內容進行掃描,看看它是否包含像.htc

EDIT 2的某些詞:謝謝你們對你的答案,pattern = Regex.Escape(".htc");就是我一直在尋找的!

+5

使用正則表達式來檢查的文件擴展名聽起來獲取2個問題而不是1的好方法。使用路徑的BCL API:http://msdn.microsoft.com/en-us/library/system.io.path.getextension%28v=vs.110%29.aspx ...或簡單地'EndsWith'。 :) – bzlm 2015-01-20 20:28:17

+0

你能給我提供一個例子嗎? 和IM沒有檢查文件擴展名,即時掃描不同的文本文件和HTML頁面,看看頁面是否包含'.htc' – 2015-01-20 20:31:00

+0

從鏈接'extension = Path.GetExtension(fileName)' – Jasen 2015-01-20 20:31:54

回答

1

特殊的正則表達式字符必須轉義,如果它們的意思是。

pattern = @"\.htc"; 

您可以

pattern = Regex.Escape(".htc"); 

自動完成,或者如果你只需要不敏感的情況下使用該解決方案「包含」功能:https://stackoverflow.com/a/15464440/880990

+0

謝謝,那就是我一直在尋找 – 2015-01-20 20:40:27