用于排除部分字符串的正则表达式

时间:2018-01-08 15:28:54

标签: java regex

我有一个只有数字123433123412的字符串,想要排除前4个数字和最后2个数字。位置5和6总是33

我试过这个正则表达式:\b[0-9]{4}(33[0-9]{4})[0-9]{2}\b 不起作用,一切都已映射。

我可以以某种方式排除前4位和后2位吗?

任何帮助都会非常感激!!

4 个答案:

答案 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的数字但不包含。