簡體   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