Java 使用正则表达式拆分字符串

Java 使用正则表达式拆分字符串,java,regex,split,Java,Regex,Split,我正在尝试使用split()获取此输出: Colour = "Red/White/Blue/Green/Yellow/" Colour = "Orange" ……但未能成功。我做错了什么 基本上,我正在匹配最后一个/,并在那里拆分字符串 String pattern = "[\\/]$"; String colours = "Red/White/Blue/Green/Yellow/Orange"; Pattern splitter = Pattern.compile(pattern); St

我正在尝试使用
split()
获取此输出:

Colour = "Red/White/Blue/Green/Yellow/"
Colour = "Orange"
……但未能成功。我做错了什么

基本上,我正在匹配最后一个
/
,并在那里拆分字符串

String pattern = "[\\/]$";
String colours = "Red/White/Blue/Green/Yellow/Orange";

Pattern splitter = Pattern.compile(pattern);
String[] result = splitter.split(colours);

for (String colour : result) {
    System.out.println("Colour = \"" + colour + "\"");
}
那么:

int ix = colours.lastIndexOf('/') + 1;
String[] result = { colours.substring(0, ix), colours.substring(ix) };

(编辑:更正为在第一个字符串的末尾包含尾随的
/

您的模式不正确,您放置了
$
,表示它必须
/
结尾,删除
$
,应该可以正常工作

当我们在做的时候,你可以用


您需要在最后一个
/
上拆分字符串。与最后一个
/
匹配的正则表达式是:

/(?!.*/)

说明:

/       : A literal /
(?!.*/) : Negative lookahead assertion. So the literal / above is matched only 
          if it is not followed by any other /. So it matches only the last /

您是想得到单独的颜色还是最后一种颜色?+1。或者,如果确实必须在第一个标记的末尾保留斜杠,则可以使用
(?@Alan:你说得对..看起来OP想把
/
放在末尾。我想OP想把字符串分成两部分,最后一部分是
/
。你必须把最后一部分和
/
连接起来才能得到所需的内容。
/       : A literal /
(?!.*/) : Negative lookahead assertion. So the literal / above is matched only 
          if it is not followed by any other /. So it matches only the last /