Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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 如果要匹配不同的情况,如何使用str.matches()?_Java - Fatal编程技术网

Java 如果要匹配不同的情况,如何使用str.matches()?

Java 如果要匹配不同的情况,如何使用str.matches()?,java,Java,我有以下字符串B113AAA,SV54DDD。我想测试基于此格式的任何字符串[LETTER{LETTER}][NUMBERNUMBER{NUMBER}][letterletter] 我把第二个{letter}和第三个{number}放在一起,因为它是可选的。我想知道我是否可以在没有任何其他条件语句(if)的情况下使用正则表达式来实现这一点。例如,如果字母“ b>代码>,则不需要第二个字母在 {} /代码>中,如果是 b>代码>我可以在中间有3个数字。但是如果它不是B,它必须有2个字母和2个数字(

我有以下字符串
B113AAA
SV54DDD
。我想测试基于此格式的任何字符串
[LETTER{LETTER}][NUMBERNUMBER{NUMBER}][letterletter]

我把第二个
{letter}
和第三个
{number}
放在一起,因为它是可选的。我想知道我是否可以在没有任何其他条件语句(if)的情况下使用正则表达式来实现这一点。例如,如果字母“<代码> b>代码>,则不需要第二个字母在<代码> {} /代码>中,如果是<代码> b>代码>我可以在中间有3个数字。但是如果它不是
B
,它必须有2个字母和2个数字(
LETTERLETTER number number letter
)。 谢谢大家!

这仅适用于
BB1N
,因为
B1N
不起作用

String x ="B1N";
if(x.matches("[A-Z]{2}[0-9][A-Z]"))

您可以使用交替,因为您需要

((一个字母和三个数字)或(两个字母和两个数字))和树字母

所以你可以这样写:

String regex = "([A-Z][0-9]{3}|[A-Z]{2}[0-9]{2})[A-Z]{3}";
List<String> list = Arrays.asList("B123XXX", "BB123XXX","B12XXX", "BB12XXX","BB12XXXX");
for (String string : list) {
    System.out.println(string + " : " + string.matches(regex));
}
String regex=“([A-Z][0-9]{3}|[A-Z]{2}[0-9]{2}[A-Z]{3}”;
列表=数组。asList(“B123XXX”、“BB123XXX”、“B12XXX”、“BB12XXX”、“BB12XXXX”);
用于(字符串:列表){
System.out.println(string+“:”+string.matches(regex));
}

您可以使用alternation,因为您需要

((一个字母和三个数字)或(两个字母和两个数字))和树字母

所以你可以这样写:

String regex = "([A-Z][0-9]{3}|[A-Z]{2}[0-9]{2})[A-Z]{3}";
List<String> list = Arrays.asList("B123XXX", "BB123XXX","B12XXX", "BB12XXX","BB12XXXX");
for (String string : list) {
    System.out.println(string + " : " + string.matches(regex));
}
String regex=“([A-Z][0-9]{3}|[A-Z]{2}[0-9]{2}[A-Z]{3}”;
列表=数组。asList(“B123XXX”、“BB123XXX”、“B12XXX”、“BB12XXX”、“BB12XXXX”);
用于(字符串:列表){
System.out.println(string+“:”+string.matches(regex));
}

是的,这是可能的。您可以将其设置为:

String regex=“^((?:B\d{3})|(?:[AC-Z][A-Z]\d{2}))[A-Z]{3}$”
然后按以下步骤进行匹配:

字符串x=…;//表示要比较的字符串。
如果(x.matches(regex))

是的,这是可能的。您可以将其设置为:

String regex=“^((?:B\d{3})|(?:[AC-Z][A-Z]\d{2}))[A-Z]{3}$”
然后按以下步骤进行匹配:

字符串x=…;//表示要比较的字符串。
如果(x.matches(regex))
String x=“B111NNN”;如果(x.matches(“[A-Z]{1,2}[0-9]{2,3}[A-Z]{3}”)),我只想在第一组字母的维数为1时进行匹配,我的意思是,只有当第一组字母为1个字母时,它才能与3位数字匹配,如果我有2个字母,则应该只与第二组字符串x=“B111NNN”中的2个数字匹配;如果(x.matches(“[A-Z]{1,2}[0-9]{2,3}[A-Z]{3}”)),我只想在第一组字母的维数为1的情况下进行匹配,我的意思是,只有在第一组字母为1的情况下,它才能与3位数字匹配,如果我有2个字母,则应该只与第二组中的2个数字匹配