我正在尝试构建一个只匹配下面的string2的正则表达式。RegEx.Match不返回预期结果
串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中测试了这个正则表达式。它在正则表达式英雄中正常工作。
有人可以帮我弄清楚我的正则表达式有什么问题。
更新:
我意识到的问题是什么: 我想要的正则表达式来仅在第一之间的文本返回true:和第一),此模式匹配:/ [&/\ W - ] + \ S */
在我的例子字符串(ABC12:CPBI,OTCBB:CPAA)有两个:
和正则表达式是匹配第二之间的文本:和)
如何修改这个正则表达式来执行我的要求。
必须转义正斜杠。你的表达式可以在你的示例字符串中找到:http://rubular.com/r/4ZFl3222jT,只是转义正斜杠。它应该/不应该做什么? – deltree 2012-02-06 17:10:27
感谢您的评论。 C sharp正则表达式能够处理正斜杠而不会溢出。可能是因为正则表达式模式被包含在“”中,而不是在javascript中。但是你的红细胞样本帮助我意识到它与第二个结肠之间的文本匹配)。 – 2012-02-06 17:40:31