質問: 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番目と: 私の要件を実施するために、この正規表現を修正する方法。
回答: これはトリックを行うようです ``` (?<=\(\w+:)(\s*\w+)+(?=\)) ``` 私は最初の部分を`(ABC12:`で `\(\ w +:` + 角括弧 `[` `]` の中で、特殊文字はその意味を失うことにも注意してください。それぞれの文字はそのままです。