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

时间:2011-03-04 04:51:07

标签: 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);
String[] result = splitter.split(colours);

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

3 个答案:

答案 0 :(得分:3)

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

/(?!.*/)

See it on IdeOne

说明:

/       : 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 :(得分:1)

怎么样:

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

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

答案 2 :(得分:1)

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

虽然我们在这,但你可以使用String.split

String colours = "Red/White/Blue/Green/Yellow/Orange";
String[] result = colours.split("\\/");

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