String m = "baacad";
String n[] = m.split("正则");
我想要的结果是:
n[0] = "baac";
n[1] = "d";
也就是说,只有当一个a的时候,才split。
这个正则怎么写?
m.split("(?<!a)a(?!a)")
[code="java"]String n[] = m.split("(?<!a)a(?!a)"); [/code]
楼上 蔡老板 正解 :idea:
public class Main {
public static void main(String[] args) {
String m = "baacad";
String m2 = m.replaceAll("([b-z])(a)([b-z])", "$1"+"_"+"$3");
String[] n = m2.split("_");
for (int i = 0; i < n.length; i++) {
System.out.println(n[i]);
}
}
}
这样也行 :wink:
楼上说的也对
捕获组(capturing group)是把多个字符当作一个单元对待的一种方式。通过把字符括在括号内创建捕获组。例如,正则表达式(dog)创建包含字母“d”、“o”和“g”的一个组。输入字符串和捕获组匹配的那一部分将被保存在内存中,以便以后通过反向引用再次使用。
而非捕获组就是输入字符串和捕获组匹配的那一部分将不被保存在内存中。这有什么用呢?当然是能够节省内存了
具体详细解释:
[url]http://www.dnbcw.com/biancheng/zhengzebiaodashi/djcj38411.html[/url]
[url]http://hi.baidu.com/victorlin23/blog/item/289cfc4333310c199213c615.html[/url]