我正在搜索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 :(得分:2)
这个怎么样?
string pattern = @"(\S+\s){5}\S*?h3\.asp";
\ S将匹配所有非空格,因此此正则表达式将匹配5个由非空格组成的组,后跟单个空格,后跟包含“h3.asp”的任何内容
答案 1 :(得分:1)
\ w仅包含a-z
你可能会更好地做一些事情:
@"(.+?\s+){5}.+?h3\.asp";
我没有测试它,但希望你会看到差异