c#中的正则表达式匹配模式

时间:2012-12-03 19:36:17

标签: c# regex

嘿我输入以下字符串:

"abcol"  
"ab_col"  
"cold"  
"col_ab"  
"col.ab"  

我有要搜索的字符串col。我正在使用正则表达式匹配

Match matchResults = Regex.Match(input , "col", RegexOptions.IgnoreCase);

我想只匹配具有此模式的字符串 [Any special character or nothing ] + col + [Any special character or nothing]

从上面的输入中,我只想返回 ab_col, col_ab , col.ab

非常感谢任何帮助 感谢

[任何特殊字符] = [^ A-Za-z0-9]

2 个答案:

答案 0 :(得分:5)

您可以使用此正则表达式: -

(?:^.*[^a-zA-Z0-9]|^)col(?:[^a-zA-Z0-9].*$|$)

说明: -

(?:   // non-capturing
  ^   // match at start of the string
  .*[^a-zA-Z0-9]  // match anything followed by a non-alphanumeric before `col`
    |     // or
  ^       // match the start itself (means nothing before col)
)
  col  // match col
(?:   // non-capturing
  [^a-zA-Z0-9].*  // match a non-alphanumeric after `col` followed by anything
   $     // match end of string
   |     // or
   $     // just match the end itself (nothing after col)
)

答案 1 :(得分:2)

@"(^|.*[\W_])col([\W_].*|$)"这是你的模式。 \w是字母数字字符,\W是非字母数字字符。 ^表示行开头,$表示行结束。 |是或。所以(^|.*\W)表示行开头或一些字符,后面是非字母数字。

修改

是的,下划线也是字母数字...所以你应该写[\W_](非字母数字或下划线)而不是\W