Java 如何使用正则表达式按最后一个字符拆分字符串?
我可以这样做:Java 如何使用正则表达式按最后一个字符拆分字符串?,java,arrays,regex,string,split,Java,Arrays,Regex,String,Split,我可以这样做: String s = "dsad.dd.ada....png"; int i = s.lastIndexOf('.'); String[] arr = {s.substring(0, i), s.substring(i + 1)}; System.out.println(Arrays.toString(arr)); 输出: [dsad.dd.ada..., png] 但我想知道我怎样才能用正则表达式来表达 String s = "dsad.dd.ada....png"; St
String s = "dsad.dd.ada....png";
int i = s.lastIndexOf('.');
String[] arr = {s.substring(0, i), s.substring(i + 1)};
System.out.println(Arrays.toString(arr));
输出:
[dsad.dd.ada..., png]
但我想知道我怎样才能用正则表达式来表达
String s = "dsad.dd.ada....png";
String[] arr = s.split("REGEX");
System.out.println(Arrays.toString(arr));
使用检查最后一个
"\\.(?=[^.]*$)"
在每次
查看时,如果前面只有
直到$
结束。如果是,则匹配
"\\.(?=[^.]*$)"
) 使用检查最后一个
"\\.(?=[^.]*$)"
在每次
查看时,如果前面只有
直到$
结束。如果是,则匹配
"\\.(?=[^.]*$)"
) 您可以使用断言(?=…)
是一个零宽度断言,它不“使用”字符串上的任何字符,只声明是否可能匹配
下面的正则表达式首先匹配一个文字点,然后使用lookahead来断言后面的字符是除点“零或更多”之外的任何字符,后跟字符串的结尾
String s = "dsad.dd.ada....png";
String[] arr = s.split("\\.(?=[^.]*$)");
System.out.println(Arrays.toString(arr)); //=> [dsad.dd.ada..., png]
您可以使用断言(?=…)
是一个零宽度断言,它不“使用”字符串上的任何字符,只声明是否可能匹配
下面的正则表达式首先匹配一个文字点,然后使用lookahead来断言后面的字符是除点“零或更多”之外的任何字符,后跟字符串的结尾
String s = "dsad.dd.ada....png";
String[] arr = s.split("\\.(?=[^.]*$)");
System.out.println(Arrays.toString(arr)); //=> [dsad.dd.ada..., png]
这一条适用于您可能提出的所有分割条件
public static void main(final String[] args) {
String test = "dsad.dd.ada....png";
String breakOn = "\\.";
String pattern = breakOn + "(?!.*" + breakOn + ".*)";
System.out.println(Arrays.toString(test.split(pattern, 2)));
}
输出:[dsad.dd.ada…,png]此项适用于您可能提出的所有分割标准
public static void main(final String[] args) {
String test = "dsad.dd.ada....png";
String breakOn = "\\.";
String pattern = breakOn + "(?!.*" + breakOn + ".*)";
System.out.println(Arrays.toString(test.split(pattern, 2)));
}
输出:[dsad.dd.ada…,png]