62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test1 {
public static void main(String[] args) {
String s = "";
Pattern pattern = Pattern.compile("\\d{4}(\\d*\t)\\d{2}(\\d{10})\\d*\t\\w*(\t\\d*\t\\d*)(\t[\u4e00-\u9fa5]{0,})$");
Matcher matcher = pattern.matcher("18955302752 460036051532711 4ffdafds 1 00000 中文字符");
while (matcher.find()) {
for(int i =1 ; i<=matcher.groupCount(); i++)
{
//System.out.println(matcher.group(i));
s += matcher.group(i);
}
}
System.out.println(s);
}
}
//其实用split基本都可以解决。你看看正则的吧
Matcher m=Pattern.compile("^(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)$").matcher("18955302752 460036051532711 1 2 3 4 5");
while(m.find()){
System.out.println(m.group(1).substring(m.group(1).length()-7,m.group(1).length()-2));//后两位前面的五位
System.out.println(Integer.parseInt(m.group(3))+Integer.parseInt(m.group(6)));//第1 2列相加
System.out.println(m.group(3)+m.group(6));//3 6列相连
System.out.println(m.group(1).replaceAll("189", "153"));//替换
System.out.println(m.group().replaceAll(m.group(3), ""));//删除第三列
}