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 /