我有一个只有数字123433123412的字符串,想要排除前4个数字和最后2个数字。位置5和6总是33
我试过这个正则表达式:\b[0-9]{4}(33[0-9]{4})[0-9]{2}\b
不起作用,一切都已映射。
我可以以某种方式排除前4位和后2位吗?
任何帮助都会非常感激!!
答案 0 :(得分:1)
简单回答:
String str="123433123412";
// No need for regexp...
String answer=str.substring(4,str.length()-2);
答案 1 :(得分:0)
我认为你只需要了解如何使用捕获组。您的正则表达式匹配整个字符串,但是,您想要的中间部分被捕获为组的一部分。看看这个链接:
https://regex101.com/r/Fmg5xJ/2
查看屏幕右侧,显示哪个组中的内容。您只需要弄清楚如何在Java中引用捕获的组。
答案 2 :(得分:0)
您应该使用:
String text = "123433123412";
String result = text.replaceAll("([0-9]{4})(33[0-9]{4})([0-9]{2})", "$2");
System.out.println(result);
答案 3 :(得分:0)
String s = "123433123412";
String ps = "(?<=\\d{4})33\\d+(?=\\d{2})";
Pattern p = Pattern.compile(ps);
Matcher m = p.matcher(s);
while (m.find()) {
String g = m.group();
System.out.println(g);
}
输出:
331234
(?&lt; = \ d {4}):匹配起始4号但不包括匹配结果
(?= \ d {2}):匹配结束2的数字但不包含。