c# - 仅当字符串前面没有某些字符时,如何匹配它的一部分?

标签 c# .net regex negative-lookbehind

我创建了以下正则表达式模式,试图匹配长度为 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/

相关文章:

c# - 如何获取由空格分隔的字符串的第一部分和最后一部分

c# - 带有 EF 代码的唯一键在前

c# - Telerik radwindow 位置

.net - 什么是动态方法,DynamicMethod 与 MethodBuilder 有何不同?

带有日志头的正则表达式模式

c# - 将 mvc 5 adfs 转换为 .net 核心 adfs

c# - .Net 4.5 wpf 打印问题,纸张大小始终为 NorthAmericaLetter

.net - 以编程方式配置 wcf 服务

javascript - 匹配除\(\d\) 之外的所有内容

java - 比较不同正则表达式的性能,需要澄清