我有一个正则表达式:
string DefaultInternalUseridPattern = "^(?i)((CEU)|(APA)|(NAM))\\\\(((ADM.){0,1}([a-z]{8}))|((SVC.){0,1}((CEU.)|(APA.)|(NAM.)|(HEI.))[a-z]*))$";
我想替换最后一部分: (CEU.)|(APA.)|(NAM.)|(HEI.)
用匹配 3 个字母然后是 的东西。
我尝试了一些东西,但没有找到解决我问题的方法。
请您参考如下方法:
您的表达式因捕获组而重载,我怀疑您是否在使用它们并建议删除那些多余的组。这将简化任何进一步的操作。
请注意,模式中的文字点必须进行转义。
我还看到您使用的是常规字符串文字,而逐字字符串文字更适合在 C# 中定义正则表达式模式。
尝试
@"^(?i)(CEU|APA|NAM)\\((ADM\.)?([a-z]{8})|(SVC\.)?([A-Z]{3}\.)[a-z]*)$"
^^^^^^^^^^
参见 demo here ,我将 4 个替代组更改为 [A-Z]{3}\.。
请注意,如果您只需要匹配大写字母,则需要在 (?-i:[A-Z]{3}\.) 组中使用它们。
