如何改变正则表达式
本文关键字:正则表达式 改变 何改变 | 更新日期: 2023-09-27 18:01:35
我有一个正则表达式:
string DefaultInternalUseridPattern = "^(?i)((CEU)|(APA)|(NAM))''''(((ADM.){0,1}([a-z]{8}))|((SVC.){0,1}((CEU.)|(APA.)|(NAM.)|(HEI.))[a-z]*))$";
我想替换最后一部分:(CEU) | (APA) |(南)|(黑)
匹配3 Letter和.
我尝试了一些东西,但没有得到解决我的问题。
你的表达式被捕获组过载,我怀疑你是否在使用它们,建议删除那些多余的。这将简化对它的进一步操作。
请注意,模式中的文字点必须转义。
我还看到你使用的是常规字符串字面值,而在c#中使用逐字字符串字面值定义正则表达式模式要舒服得多。
试
@"^(?i)(CEU|APA|NAM)''((ADM'.)?([a-z]{8})|(SVC'.)?([A-Z]{3}'.)[a-z]*)$"
^^^^^^^^^^
查看这里的演示,我将4个备选组更改为[A-Z]{3}'.
。
请注意,如果您只需要在那里匹配大写字母,则需要在(?-i:[A-Z]{3}'.)
组中使用它们。
您可以删除所有不需要的捕获组,并使用这个
原料:^(?i)(?:CEU|APA|NAM)''(?:(?:ADM'.)?[a-z]{8}|(?:SVC'.)?[A-Z]{3}'.[a-z]*)$
[字]@"^(?i)(?:CEU|APA|NAM)''(?:(?:ADM'.)?[a-z]{8}|(?:SVC'.)?[A-Z]{3}'.[a-z]*)$"
^
(?i) # Be careful here, this says case insensitive
# for all subsequent letter matching.
(?: CEU | APA | NAM )
''
(?:
(?: ADM '. )?
[a-z]{8}
|
(?: SVC '. )?
[A-Z]{3} '.
[a-z]*
)
$