Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 - Fatal编程技术网

Java 正则表达式-从字符串确定矩阵

Java 正则表达式-从字符串确定矩阵,java,regex,string,Java,Regex,String,如何为可能包含以下组合的字符串创建简单矩阵 123456 ABC 123456AB1 123456AB12 123456AB123 123456 比如说 if ("\\d + \\d + \\d + \\d + \\d + \\d + \\s + [a-zA-Z]+[a-zA-Z]+[a-zA-Z]") { //passed variant from input in form 123456 ABC } else if ("\\d + \\d + \\d +

如何为可能包含以下组合的字符串创建简单矩阵

123456 ABC    
123456AB1
123456AB12
123456AB123
123456
比如说

if ("\\d + \\d + \\d + \\d + \\d + \\d  
   + \\s 
   + [a-zA-Z]+[a-zA-Z]+[a-zA-Z]") {
   //passed variant from input in form 123456 ABC

} else if ("\\d + \\d + \\d + \\d + \\d + \\d 
   + [a-zA-Z]+[a-zA-Z]+[a-zA-Z]
   + \\d") {
   //passed variant from input in form 123456AB1

} else if ("\\d + \\d + \\d + \\d + \\d + \\d 
   + [a-zA-Z]+[a-zA-Z]+[a-zA-Z]
   + \\d + \\d") {
   //passed variant from input in form 123456AB12

} else if ("\\d + \\d + \\d + \\d + \\d + \\d 
   + [a-zA-Z]+[a-zA-Z]+[a-zA-Z]
   + \\d + \\d + \\d") {
   //passed variant from input in form 123456AB123

} else if ("\\d + \\d + \\d + \\d + \\d + \\d") {
   //passed variant from input in form 0123456

} else {
   //doesn't match
}

例如,您可以使用以下正则表达式

123456 ABC  -> \\d{6}\\s\\w{3}
123456AB1   -> \\d{6}\\w{3}
123456AB12  -> \\d{6}\\w{4}
123456AB123 -> \\d{6}\\w{5}
123456      -> \\d{6}
if子句可以像您的示例中那样使用,例如

if(str.matches("\\d{6}\\s\\w+") { 
    ... 
} ...

正如您的问题一样,这些正则表达式变体仅涵盖本例中的精确组合

如果需要将输入字符串拆分为相关部分,请尝试以下正则表达式:
(\d{6})\s*([a-zA-Z]*)(\d*)

对于
123456AB123
组1为
123456
,组2为
AB
,组3为
123
。 当组丢失时,它们只是一个emtpy字符串

请注意,如果变量之间的唯一区别是组(组1始终存在,组2和3可能为空),则不需要在不同的正则表达式上使用if-else。相反,您可能会有如下内容(伪代码):


你能举一些不应该匹配的例子吗?欢迎投反对票,也许我是第一个不懂的人,比如这个帖子:-)
if(matches) {
  groups[3] = extractGroups();

  //groups[0] should always exist

  if(groups[1] is not empty) {
    ...
  }

  if(groups[2] is not empty) {
    ...
  }
} else {
  handle non-match
}