我创建了以下正则表达式模式,试图匹配长度为 6 个字符且以“PRI”或“SEC”结尾的字符串,除非字符串 =“SIGSEC”。例如,我想匹配 ABCPRI、XYZPRI、ABCSEC 和 XYZSEC,但不匹配 SIGSEC。
(\w{3}PRI$|[^SIG].*SEC$)
它非常接近并且可以工作(如果我传入“SINSEC”,它会返回“NSEC”的部分匹配),但我对它当前的形式感觉不太好。此外,我可能需要稍后添加除“SIG”之外的更多排除项,并意识到这可能不会很好地扩展。有什么想法吗?
顺便说一句,我在 C# 中使用 System.Text.RegularExpressions.Regex.Match()
谢谢, 丰富
最佳答案
假设您的正则表达式引擎支持否定前瞻,试试这个:
((?!SIGSEC)\w{3}(?:SEC|PRI))
编辑:一位评论者指出 .NET 确实支持否定前瞻,因此这应该可以正常工作(谢谢,Charlie)。
关于c# - 仅当字符串前面没有某些字符时,如何匹配它的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/207256/