Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 帮助构造正则表达式_Java_Regex_String Matching - Fatal编程技术网

Java 帮助构造正则表达式

Java 帮助构造正则表达式,java,regex,string-matching,Java,Regex,String Matching,我需要知道一个字符串是否匹配多个不同的标准。我试图通过使用正则表达式来解决这个问题,然后查看它是否匹配(在Java中:str.matches(myRegex);),但我无法正确地得到它 标准如下: 要匹配的字符串由4个字母[A-Z]构成 它可以(但不一定)在“-”、“+”或“VC”之前 它只能匹配正好包含4个字母的字符串(以及可能前面的字符) 示例: “SHSN”->匹配 “+SHRA”->匹配 “VCSHRA”->匹配 “CAVOK”->没有匹配项 “-+SHSN”->不匹配 这可以在

我需要知道一个字符串是否匹配多个不同的标准。我试图通过使用正则表达式来解决这个问题,然后查看它是否匹配(在Java中:str.matches(myRegex);),但我无法正确地得到它

标准如下:

  • 要匹配的字符串由4个字母[A-Z]构成
  • 它可以(但不一定)在“-”、“+”或“VC”之前
  • 它只能匹配正好包含4个字母的字符串(以及可能前面的字符)
示例:

  • “SHSN”->匹配
  • “+SHRA”->匹配
  • “VCSHRA”->匹配
  • “CAVOK”->没有匹配项
  • “-+SHSN”->不匹配
这可以在一个正则表达式中实现吗?还是应该用代码或两者的组合来完成

谢谢


Linus

尝试以下正则表达式:

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

+1.但是如果他不需要它来捕获,我会把它变成一个非捕获组:
^(?[+-]|VC)?[a-Z]{4}$
非常好,谢谢!我不熟悉术语“捕获组”,但会查找。@Aspatame:无法引用非捕获组的匹配项。因此,您不能使用
组(1)
来获得
(?:[+-]|VC)?
的匹配。