Java Regex捕获第一组斜线

时间:2019-04-18 11:34:21

标签: java regex

我有以下网址

/es-es/Replica-2300/saliffanag/winsrow
/es-de/Bat-00/saliffanag/winsrow
/es-it/Re-2300/saliffanag/winsrow
/es-../
etc..

我需要一个仅捕获Java中的/ es-es /或/ es-de /或/ es-it /(第一个/...-.../)的模式。

我已经尝试过

"[^/]*/([^/]*)/"

但是不起作用

我该如何实现?

3 个答案:

答案 0 :(得分:3)

只需使用拆分:

"/es-es/Replica-2300/saliffanag/winsrow".split("/", 3)[1] 

在返回“ es-es”之后,只需在/后面加上

对于可变网址:

String[] split = "padding/test/for/loop/es-es/Replica-2300/saliffanag/winsrow".split("/");
String result = "";  

for(String s : split){
  if(s.length() != 5){ continue;} 
  if(s.charAt(2) == '-'){
    result = s; //if you need the '/' just use result = "/" + s "/";
    break;
  }
}

答案 1 :(得分:1)

您在这里:

\/(es-[a-z]+)\/

尝试在Regex101处查找表达式。

  • \/从字面上匹配/-必须转义
  • ()是捕获组
  • es-从字面上匹配自己
  • [a-z]+将一个或多个字母匹配在一起

如果输入可能是ex。 it-it,您想使用\/(\[a-z\]+-\[a-z\]+)\/

另一方面,如果您已定义了可能的后缀列表,请使用\/(es-(?:es|de|it))\/,其中(?:)是一个非捕获组。

答案 2 :(得分:0)

\/([a-z]{2}-[a-z]{2})\/

参见此处:https://regexr.com/4chaj

Regexr将详细说明此特定regex的工作方式。只需点击“说明”