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个数字匹配