2010-01-31 72 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