2010-01-31 66 views
4

我需要知道一個字符串是否與許多不同的標準匹配。我試圖通過使用一個正則表達式來解決這個問題,然後看看它是否匹配(在Java中:str.matches(myRegex);),但我無法做到。幫助構建正則表達式

的指標分析如下:

  • 通過一個匹配構造的4個字母,[AZ]
  • 它可以preceeded(但不是必須)的字符串 「 - 」,「+ 「或 」VC「
  • 它應只匹配正好含有4個字母(以及可能前述字符)

實例字符串:

  • 「SHSN」 - >匹配
  • 「+ SHRA」 - >匹配
  • 「VCSHRA」 - >匹配
  • 「CAVOK」 - >不匹配
  • 「 - + SHSN」 - >無匹配

這是可能做到一個單一的正則表達式嗎?或者應該用代碼還是兩者結合來完成?

感謝,

萊納斯

回答

7

試試這個正則表達式:

^([+-]|VC)?[A-Z]{4}$ 
+2

+1。但是,如果他不需要它捕獲,我會將它設爲非捕獲組:[^(?:[+ - ] | VC)?[A-Z] {4} $' – 2010-01-31 14:03:20

+0

非常好,謝謝! 我不熟悉術語「捕獲組」,但會查找它。 – aspartame 2010-01-31 14:10:35

+0

@aspartame:非捕獲組的匹配不能被引用。所以你不能用'group(1)'來得到'(?:[+ - ] | VC)?'的匹配。 – Gumbo 2010-01-31 14:32:21