Skip to main content
 首页 » 编程设计

c#之如何更改我的正则表达式

2024年04月18日38jiqing9006

我有一个正则表达式:

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}\.) 组中使用它们。