RegEx.Matchが期待した結果を返さない

私は以下のstring2にマッチする正規表現を構築しようとしています。

文字列1:(ABC12:CPBI、OTCBB:CPBI)

文字列2:(ABC12:CPBI OTCF CPBI)

以下は私のC#コードです

private static Regex rxSymbol = new Regex(@"(?<=:)[&/\w -]+\s*(?=\))", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace ); 

rxSymbol.IsMatch(ticker) 

isMatch文はstring1に対してtrueを返します。 rxSymbol.Match(ticker)を使用して完全一致を取得しようとしたとき、これは 'CPBI'と一致しています。

私はコード内で使用する前にRegexHeroでこのRegexをテストしました。それは正規表現のヒーローで正しく動作します。

私の正規表現が間違っていることを誰かが理解できるように助けることができますか?

更新:

I realized what the problem is: I want the Regex to return true only if the text between the first : and the first ) matches this pattern: /[&/\w -]+\s*/

私の例の文字列(ABC12:CPBI、OTCBB:CPAA)には2つのがあり、正規表現は2番目と:

私の要件を実施するために、この正規表現を修正する方法。

0
スラッシュをエスケープする必要があります。あなたの表現はここにあなたの例文で見つけることができます: rubular.com/r/4ZFl3222jT スラッシュをエスケープする。それはどうしたらよいはずですか?
追加された 著者 deltree,
ご意見ありがとうございます。 Cシャープ正規表現は、逃げずにスラッシュを処理することができます。正規表現パターンはjavascriptのように//ではなく ""で囲まれている可能性があります。しかし、あなたのルーラーのサンプルは、それが第2コロンとの間のテキストにマッチしていることを理解する助けとなりました。
追加された 著者 Madhu Kasic,

1 答え

これはトリックを行うようです

(?<=\(\w+:)(\s*\w+)+(?=\))

私は最初の部分を(ABC12: \(\ w +: +

角括弧 [ ] の中で、特殊文字はその意味を失うことにも注意してください。それぞれの文字はそのままです。

2
追加された
ありがとうございました。それは期待どおりに動作します。
追加された 著者 Madhu Kasic,