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

本文关键字:字符串 串匹配 字符 正则表达式 条件 | 更新日期: 2023-09-27 18:34:48

我正在尝试使用 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(该级别的部分字符。

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

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

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

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

  • 匹配 x 正好 n 次:x{n}

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

例子:

  • 两个大写字母字符:[A-Z]{2}
  • 两个大写字母字符,后跟短划线:[A-Z]{2}-
  • 两个大写字母字符,后跟短划线,后跟 0、1 或 2:[A-Z]{2}-[0-2]
  • 两个大写字母字符,后跟一个短划线,后跟 0、1 或 2,但子表达式由短划线组成,0、1 或 2 出现零或一次:
    [A-Z]{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})?)?)?)?)?)?$