例如 string str=“a张三bc李四de五f”;
截取成 张三 李四 王五
正则表达式
(a1|a2|a3)(.*?)(b1|b2|b3)(c1|c2|c3)(.*?)(d1|d2|d3)(e1|e2|e3)(.*?)(f1|f2|f3)
说明:a,a2,a3表示张三的多种前缀字符串,b1,b2,b3表示张三的多种后缀字符串。如果还有更多的,加到括号里,中间用 | 分隔。
用 $数字 的形式截取匹配的项。数字按照括号出现的顺序计算。
string str="a1张三b1c2李四d2e1王五f2";
System.out.println(str.replaceAll("(a1|a2|a3)(.*?)(b1|b2|b3)(c1|c2|c3)(.*?)(d1|d2|d3)(e1|e2|e3)(.*?)(f1|f2|f3)","$2 $5 $8"));
如果bc之间、de之间还有其他字符,可以把正则表达式改成这样:
(a1|a2|a3)(.*?)(b1|b2|b3).*(c1|c2|c3)(.*?)(d1|d2|d3).*(e1|e2|e3)(.*?)(f1|f2|f3)
正则表达式:
[a-zA-Z\d]*(.*?)[a-zA-Z\d]*(.*?)[a-zA-Z\d]*(.*?)[a-zA-Z\d]*
举例:
string str="a张三bc李四de五f";
System.out.println(str.replaceAll("[a-zA-Z\d]*(.*?)[a-zA-Z\d]*(.*?)[a-zA-Z\d]*(.*?)[a-zA-Z\d]*","$1 $2 $3"));
正则表达式
a(.*?)bc(.*?)de(.*?)f
用$1 $2 $3分别得到张三 李四 王五
string str="a张三bc李四de五f";
System.out.println(str.replaceAll("a(.*?)bc(.*?)de(.*?)f","$1 $2 $3"));
这个可以实现吗