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:/&&;/''w-]+''s*/
在我的示例字符串(ABC12:CPBI,OTCBB:CPAA)中,有两个:
,regex与2nd:和)之间的文本匹配
如何修改此正则表达式以强制执行我的要求。
这似乎是的诀窍
(?<='('w+:)('s*'w+)+(?='))
我用'('w+:
指定了第一部分(ABC12:
。我还用更具体的('s*'w+)+
替换了中间部分。
还要注意,在方括号[
]
中,特殊字符失去了意义。每个字符都按原样。