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 个不同的语句吗?似乎不合理,但我可能是错的。
看看正则表达式语言。您需要以下元素:
- 大写字母字符:
[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})?)?)?)?)?)?$