我创建了以下正则表达式模式,试图匹配长度为6个字符的字符串,以"PRI"或"SEC"结尾,除非string ="SIGSEC".例如,我想匹配ABCPRI,XYZPRI,ABCSEC和XYZSEC,但不匹配SIGSEC.
(\w{3}PRI$|[^SIG].*SEC$)
这是非常接近和一些工作(如果我传入"SINSEC",它返回"NSEC"的部分匹配),但我对它的当前形式没有很好的感觉.此外,我可能需要在"SIG"之后添加更多排除项,并意识到这可能不会扩展得太好.有任何想法吗?
顺便说一句,我在C#中使用System.Text.RegularExpressions.Regex.Match()
谢谢,Rich
假设你的正则表达式引擎支持负向前瞻,试试这个:
((?!SIGSEC)\w{3}(?:SEC|PRI))
编辑:一位评论者指出.NET确实支持负向前瞻,所以这应该可以正常工作(谢谢,查理).