嘿我输入以下字符串:
"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]
答案 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