如果字符串的前面没有某些字符,我该如何匹配?

Ric*_*ich 4 .net c# regex negative-lookbehind

我创建了以下正则表达式模式,试图匹配长度为6个字符的字符串,以"PRI"或"SEC"结尾,除非string ="SIGSEC".例如,我想匹配ABCPRI,XYZPRI,ABCSEC和XYZSEC,但不匹配SIGSEC.

(\w{3}PRI$|[^SIG].*SEC$)
Run Code Online (Sandbox Code Playgroud)

这是非常接近和一些工作(如果我传入"SINSEC",它返回"NSEC"的部分匹配),但我对它的当前形式没有很好的感觉.此外,我可能需要在"SIG"之后添加更多排除项,并意识到这可能不会扩展得太好.有任何想法吗?

顺便说一句,我在C#中使用System.Text.RegularExpressions.Regex.Match()

谢谢,Rich

Dan*_*Dan 6

假设你的正则表达式引擎支持负向前瞻,试试这个:

((?!SIGSEC)\w{3}(?:SEC|PRI))
Run Code Online (Sandbox Code Playgroud)

编辑:一位评论者指出.NET确实支持负向前瞻,所以这应该可以正常工作(谢谢,查理).