繁体   English   中英

c#条件正则表达式字符串匹配

[英]c# Conditional Regular Expression String Match

我正在尝试使用c#正则表达式来匹配特定的字符串,但是我不知道该怎么做。 任何帮助表示赞赏。

我要匹配的字符串如下,其中A是大写字母字符,X是大写字母数字字符,#是0、1或2。

AA-#-XX-X-XXX-XXXXXXX-XXXXXXXX

因此,以下任何内容都将与上面的字符串匹配。

XY-1

MM-0-AB

MM-0-AB-1-ABC-1234567

VV-2-XX-7-CCC-ABCDEFG-12345678

以下任何一项都不匹配。

QQ-7-AA (第二级仅允许使用0、1、2。)

QQ-2-XX-7-CC (该级别的部分字符。)

QQ-2-XX-7-CCC-ABCDEFG- (不能以破折号结尾。)

QQ-2-XX-7-CCC-ABCDEFG-123456 (该级别的部分字符。)

到目前为止(实际上不是那么远),我可以作为匹配@"^[AZ]{2}" ,但是我不确定如何有条件地进行匹配(我不确定是否有条件地使用了正确的术语)字符串的其余部分,但前提是它在那里。 为此,我需要写7个不同的语句吗? 似乎不合理,但我可能是错的。

看看正则表达式语言 您需要以下元素:

  • 大写字母字符: [AZ]
  • 大写字母数字字符: [A-Z0-9]
  • 0、1或2: [0-2]
  • 破折号: -

  • 精确匹配xn次: x{n}

  • 匹配x零或一次: x?
  • 定义一个子表达式: ( ... )

例子:

  • 两个大写字母字符: [AZ]{2}
  • 两个大写字母字符,后接破折号: [AZ]{2}-
  • 两个大写字母字符,后跟一个破折号,后跟0、1或2: [AZ]{2}-[0-2]
  • 两个大写字母字符,后跟一个破折号,后跟0、1或2,但是由破折号和0、1或2组成的子表达式出现零或一次:
    [AZ]{2}(-[0-2])?
  • 等等...

结果表达式:

^[A-Z]{2}(-[0-2](-[A-Z0-9]{2}(-[A-Z0-9](-[A-Z0-9]{3}(-[A-Z0-9]{7}(-[A-Z0-9]{8})?)?)?)?)?)?$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM