Java 过滤正则表达式的输出

Java 过滤正则表达式的输出,java,regex,Java,Regex,我使用正则表达式从txt文件中提取内容。我有两个问题。现在我有了一个代码,可以为我做正则表达式,但它需要更多的内存。那么,我如何改进我当前的代码以使用最小内存呢。另一个问题是我想要文件管理器(获取当前正则表达式结果的某些部分)。例如:我当前的代码给出part=324234,我想对它进行过滤,只得到数字。要获得零件号,必须使用这个正则表达式,现在我想过滤输出。那么我该怎么做呢。请帮助我克服这个问题。任何帮助都是非常感激的。以下是我当前的正则表达式代码: public class RegularEx

我使用正则表达式从txt文件中提取内容。我有两个问题。现在我有了一个代码,可以为我做正则表达式,但它需要更多的内存。那么,我如何改进我当前的代码以使用最小内存呢。另一个问题是我想要文件管理器(获取当前正则表达式结果的某些部分)。例如:我当前的代码给出part=324234,我想对它进行过滤,只得到数字。要获得零件号,必须使用这个正则表达式,现在我想过滤输出。那么我该怎么做呢。请帮助我克服这个问题。任何帮助都是非常感激的。以下是我当前的正则表达式代码:

public class RegularExpression_fyp{

    public static void main(String [] argv) throws Exception {
        String pattern = "\\part\\=\\w[0-9 ]+";

        Pattern r = Pattern.compile(pattern);

        FileInputStream input = new FileInputStream("F:\\testing1.txt");
        FileChannel channel = input.getChannel();

        ByteBuffer bbuf = channel.map(FileChannel.MapMode.READ_ONLY, 0, (int) channel.size());
        CharBuffer cbuf = Charset.forName("8859_1").newDecoder().decode(bbuf);

        Matcher matcher = r.matcher(cbuf);

        if (matcher.find()) {
            System.out.println("Found value: " + matcher.group(0));
        }
        else {
            System.out.println("NO MATCH");
        }
    }
}

从组索引1中获取字符串
part=
后的数字

part\\s*=\\s*([0-9]+)
代码:

输出:

324324234

如果您担心内存问题,任何使用组的正则表达式都会比不使用组的正则表达式消耗更多内存

捕获组是将多个角色视为单个单元的一种方法。它们是通过将要分组的字符放在一组括号内创建的。例如,正则表达式
([0-9)
创建一个包含从0到9的数字的组。与捕获组匹配的输入字符串部分将保存在内存中,以便以后通过反向引用调用


通过执行
(?你有什么建议来改进我的代码吗?谢谢你的贡献。这里每次数字都不同,我也必须运行此代码几次。这就是为什么我使用part=。它将匹配在
part=
之后出现的任何数字。你可以使用lookback来测试数字之前的字符串:
(?)?
324324234