正则,帮看看
C# code
C# code
为何 strMatch 结果为 " 121.189.226.72 1253432292 1253432292\r\n"
( 我认为应该是 " 121.189.226.72 1253432292 1253432292")
非捕获组 (?:(\r\n)) 不起作用 ?
static public string GetMatch(string input, string pattern) { Regex re = new Regex(pattern); Match myMatch = re.Match(input); if (myMatch != null) { return myMatch.Value; } else { return ""; } }
C# code
strContent = " 121.189.226.72 1253432292 1253432292\r\n"; string strMatch = GetMatch(strContent, @".*(?:(\r\n))");
为何 strMatch 结果为 " 121.189.226.72 1253432292 1253432292\r\n"
( 我认为应该是 " 121.189.226.72 1253432292 1253432292")
非捕获组 (?:(\r\n)) 不起作用 ?
作者: yzm888 发布时间: 2011-06-16
.*(?:(\r\n))
.*使用贪婪模式匹配到 121.189.226.72 1253432292 1253432292\r
然后开始匹配\n,失配后回溯一次。
.*匹配 121.189.226.72 1253432292 1253432292
\r\n匹配后面的\r\n
结果记录到分组1,外面又多了一层括号进行组合并取消外层的组合。
所以结果就是你看到的。
我估计你笔误,想写
@".*(?=(\r\n))
.*使用贪婪模式匹配到 121.189.226.72 1253432292 1253432292\r
然后开始匹配\n,失配后回溯一次。
.*匹配 121.189.226.72 1253432292 1253432292
\r\n匹配后面的\r\n
结果记录到分组1,外面又多了一层括号进行组合并取消外层的组合。
所以结果就是你看到的。
我估计你笔误,想写
@".*(?=(\r\n))
作者: wuyazhe 发布时间: 2011-06-16
C# code
strContent = " 121.189.226.72 1253432292 1253432292\r\n"; string strMatch = GetMatch(strContent,@".*(?=\r\n)");
作者: wuyazhe 发布时间: 2011-06-16
为什么不直接用replace替换掉。。。\r\n??
作者: porschev 发布时间: 2011-06-16