Java 帮助构造正则表达式
我需要知道一个字符串是否匹配多个不同的标准。我试图通过使用正则表达式来解决这个问题,然后查看它是否匹配(在Java中:str.matches(myRegex);),但我无法正确地得到它 标准如下:Java 帮助构造正则表达式,java,regex,string-matching,Java,Regex,String Matching,我需要知道一个字符串是否匹配多个不同的标准。我试图通过使用正则表达式来解决这个问题,然后查看它是否匹配(在Java中:str.matches(myRegex);),但我无法正确地得到它 标准如下: 要匹配的字符串由4个字母[A-Z]构成 它可以(但不一定)在“-”、“+”或“VC”之前 它只能匹配正好包含4个字母的字符串(以及可能前面的字符) 示例: “SHSN”->匹配 “+SHRA”->匹配 “VCSHRA”->匹配 “CAVOK”->没有匹配项 “-+SHSN”->不匹配 这可以在
- 要匹配的字符串由4个字母[A-Z]构成
- 它可以(但不一定)在“-”、“+”或“VC”之前
- 它只能匹配正好包含4个字母的字符串(以及可能前面的字符)
- “SHSN”->匹配
- “+SHRA”->匹配
- “VCSHRA”->匹配
- “CAVOK”->没有匹配项
- “-+SHSN”->不匹配
Linus尝试以下正则表达式:
^([+-]|VC)?[A-Z]{4}$
+1.但是如果他不需要它来捕获,我会把它变成一个非捕获组:
^(?[+-]|VC)?[a-Z]{4}$
非常好,谢谢!我不熟悉术语“捕获组”,但会查找。@Aspatame:无法引用非捕获组的匹配项。因此,您不能使用组(1)
来获得(?:[+-]|VC)?
的匹配。