1

ねえ、私は入力として次の文字列を持っています:

"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]

4

2 に答える 2

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)
)
于 2012-12-03T19:39:12.520 に答える
2

@"(^|.*[\W_])col([\W_].*|$)"これがあなたのパターンです。\wは英数字であり、英数字\W以外の文字です。^はラインの開始を$意味し、ラインの終了を意味します。|またはです。(^|.*\W)つまり、行の先頭または一部の文字とその後の英数字以外の文字を意味します 。

編集:

はい、下線も英数字です...したがって、[\W_]代わりに(英数字以外または下線)と書く必要があります\W

于 2012-12-03T19:38:48.197 に答える