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

C# c语言中的正则表达式匹配模式#,c#,regex,C#,Regex,嘿,我有以下字符串作为输入: "abcol" "ab_col" "cold" "col_ab" "col.ab" 我有要搜索的字符串列。我用正则表达式来匹配 Match matchResults = Regex.Match(input , "col", RegexOptions.IgnoreCase); 我只想匹配具有此模式的字符串 [任何特殊字符或无]+col+[任何特殊字符或无] 从上面的输入中,我只想返回 ab\u col,col\u ab,col.ab 非常感谢您

嘿,我有以下字符串作为输入:

"abcol"  
"ab_col"  
"cold"  
"col_ab"  
"col.ab"  
我有要搜索的字符串列。我用正则表达式来匹配

Match matchResults = Regex.Match(input , "col", RegexOptions.IgnoreCase);
我只想匹配具有此模式的字符串
[任何特殊字符或无]+col+[任何特殊字符或无]

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

非常感谢您的帮助。
谢谢

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

@(^.[\W].[\W}])列([\W.].[\W}$)”
这是您的模式<代码>\w是字母数字字符,
\w
是非字母数字字符<代码>^表示行开始,
$
表示行结束<代码>|是or。因此,
(^ |.*\W)
表示行开始或某些字符以及它们后面的非字母数字

编辑:

是的,下划线也是字母数字的。。。因此,您应该编写
[\W\u]
(非字母数字或下划线)而不是
\W
@(^ |.[\W\u])列([\W\u].[\124;$)”
这是您的模式<代码>\w是字母数字字符,
\w
是非字母数字字符<代码>^表示行开始,
$
表示行结束<代码>|是or。因此,
(^ |.*\W)
表示行开始或某些字符以及它们后面的非字母数字

编辑:


是的,下划线也是字母数字的。。。因此,您应该编写
[\W\u]
(非字母数字或下划线)而不是
\W

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

(?:^.*[^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)
)

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

(?:^.*[^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)
)

什么定义了“特殊字符”?不是字母数字字符[^a-Za-z0-9](任何不是字母或数字的字符)您没有指定您尝试了什么,也没有问正确的问题,而是说“为我解决这个问题”。我知道这可能会很棘手,但如果你在提问之前在互联网上搜索,这个问题可能会得到解决。使用[^A-Za-z0-9],我可以部分得到我想要的。我熟悉Regex,并尝试在互联网上搜索。我知道我必须用“|”这个词,但不知道具体怎么用。这就是我在这里发帖的原因。感谢您的反馈。什么定义了“特殊字符”?不是字母数字字符[^a-Za-z0-9](任何不是字母或数字的字符)您没有指定您尝试过的内容,也没有问正确的问题,而是说“为我解决这个问题”。我知道这可能会很棘手,但如果你在提问之前在互联网上搜索,这个问题可能会得到解决。使用[^A-Za-z0-9],我可以部分得到我想要的。我熟悉Regex,并尝试在互联网上搜索。我知道我必须用“|”这个词,但不知道具体怎么用。这就是我在这里发帖的原因。感谢您的反馈。这将无法满足“ab_col”是匹配项或“col_ab”的要求,因为“\u”包含在“\w”类中。只需再次运行编辑,仍然失败。它将匹配“ab.col”,但不匹配“ab_col”。这是因为使用了“\W”类,该类表示“不匹配”\uw\W也跳过了下划线,而我没有跳过下划线want@user1178492-如果将其分组(这是我在编辑答案时添加的内容),使其与下划线匹配,而不是\W[\W]。我喜欢[^a-zA-Z-0-9]上的这个,只是因为它更紧凑,但从长远来看,一些人可能会发现完整的列表更可读。这不会满足“ab_col”是匹配项或“col_ab”的要求,因为“\w”类中包含“\u”。只需再次运行编辑,仍然失败。它将匹配“ab.col”,但不匹配“ab_col”。这是因为使用了“\W”类,该类表示“不匹配”\uw\W也跳过了下划线,而我没有跳过下划线want@user1178492-如果将其分组(这是我在编辑答案时添加的内容),使其与下划线匹配,而不是\W[\W]。我喜欢这个而不是[^a-zA-Z-0-9],只是因为它更紧凑,但从长远来看,一些人可能会发现完整的列表更可读。