我有一个正则表达式:

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

关于c# - 如何更改我的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38853336/

10-11 08:25