2011-02-27 113 views
0

我搜索雖然IIS日誌尋找行的文件,其中第6個字包含h3.asp正則表達式匹配的特定詞在句子中

把我的正則表達式,但它的失敗:

string text = @"2010-08-28 00:12:15 W3SVC591993719 192.168.10.13 GET /forum/h3.asp g=forum 80 - 10.10.10.10 Opera/9.80+(S60;+SymbOS;+Opera+Mobi/499;+U;+no)+Presto/2.4.18+Version/10.00 http://www.somesite.com/forum/default.aspx?g=posts&m=28078& www.somesite.com 200 0 0 62"; 

string pattern = @"(\w*){5}\w*h3\.asp"; 

Console.WriteLine(Regex.IsMatch(text, pattern)); 

在上面的例子中,我期待着一場比賽,但顯然有些事情是錯誤的。

+0

「^( \ w){5} [^ \ s] * h3 \ .asp「?? – 2011-02-27 21:11:09

+0

總是谷歌這樣的事情http://www.regextester.com/他們可以是如此有幫助 – 2011-02-27 21:13:40

+0

不確定關於IIS,但在pcre \ w是字詞'A「字」字符是任何字母或數字或下劃線字符。即':'將打破匹配。你最好擴大你的比賽範圍,因爲空間實際上是你所關心的。 – cjp 2011-02-27 21:18:23

回答

2

這個怎麼樣?

string pattern = @"(\S+\s){5}\S*?h3\.asp"; 

\ S將匹配所有非空白,所以此正則表達式匹配5組由非空白後跟單個空格,的隨後任何含有「h3.asp」

1

\ W僅包括AZ

你可能會更好做線沿線的東西:

@"(.+?\s+){5}.+?h3\.asp"; 

我沒有測試它,但希望你會看到其中的差別

+0

謝謝。精美的作品。 – Paaland 2011-02-27 21:14:14

相關問題