RegEx.Match未返回预期结果

本文关键字:结果 返回 Match RegEx | 更新日期: 2023-09-27 18:22:36

我正在尝试构建一个只匹配下面字符串2的正则表达式。

字符串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语句正在为字符串1返回true。当我尝试使用rxSymbol.Match(ticker)获得完全匹配时,这就是匹配的"CPBI"。

在我的代码中使用之前,我在RegexHero中测试了这个Regex。它在regex Hero中正常工作。

有人能帮我弄清楚我的正则表达式出了什么问题吗。

更新:

我意识到问题出在哪里:我希望Regex只有在第一个:和第一个之间的文本匹配以下模式时才返回true:/&&amp;/''w-]+''s*/

在我的示例字符串(ABC12:CPBI,OTCBB:CPAA)中,有两个:,regex与2nd:和)之间的文本匹配

如何修改此正则表达式以强制执行我的要求。

RegEx.Match未返回预期结果

这似乎是的诀窍

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

我用'('w+:指定了第一部分(ABC12:。我还用更具体的('s*'w+)+替换了中间部分。

还要注意,在方括号[ ]中,特殊字符失去了意义。每个字符都按原样。