[英]How can i split a String by last char with a regex?
我可以这样:
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));
您可以使用先行断言。 (?= ... )
是一个零宽度的断言,它不“消耗”字符串上的任何字符,而仅断言是否可以匹配。
下面的正则表达式首先匹配文字点,然后使用前瞻性断言除点“零次或多次”以外的任何字符,然后是字符串的末尾。
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.