Java:如何删除字符串中除a-z、数字和德语字符以外的所有字符

Java:如何删除字符串中除a-z、数字和德语字符以外的所有字符,java,regex,parsing,Java,Regex,Parsing,我正在开发一个SpringMVC应用程序,目前我们正在其中集成OCR功能。光学字符识别(OCR)有一个习惯,即在错误检测和背景中有图像时,会抛出野生字符。经过图像处理后,我们获得了相当好的数据,但仍然存在一些错误。我们希望按如下方式处理输出 从输出字符串中删除所有单个字符 删除除A-Z、A-Z、德语字符以外的所有字符,即äöü、ÄäÜ、ß 空格和数字应保持不变 代码: File imageFile = new File(fileLocation); Buffered

我正在开发一个SpringMVC应用程序,目前我们正在其中集成OCR功能。光学字符识别(OCR)有一个习惯,即在错误检测和背景中有图像时,会抛出野生字符。经过图像处理后,我们获得了相当好的数据,但仍然存在一些错误。我们希望按如下方式处理输出

  • 从输出字符串中删除所有单个字符
  • 删除除A-Z、A-Z、德语字符以外的所有字符,即äöü、ÄäÜ、ß
  • 空格和数字应保持不变 代码:

      File imageFile = new File(fileLocation);
    
                BufferedImage img  = ImageIO.read(imageFile);
                BufferedImage blackNWhite = new BufferedImage(img.getWidth(),img.getHeight(),BufferedImage.TYPE_BYTE_BINARY);
                Graphics2D graphics = blackNWhite.createGraphics();
                graphics.drawImage(img, 0, 0, null);
                String blackAndWhiteImage =  zipLocation + String.valueOf(new BigInteger(130, random).toString(32))+".png";
                File outputfile = new File(blackAndWhiteImage);
                ImageIO.write(blackNWhite, "png", outputfile);
    
                ITesseract instance = new Tesseract();
                // Point to one folder above tessdata directory, must contain training data
                instance.setDatapath("/usr/share/tesseract-ocr/");
                // ISO 693-3 standard
                instance.setLanguage("deu");
                String result = instance.doOCR(outputfile);
                //System.out.println(result);
                 result = result.replaceAll("\\P{ASCII}","");
                System.out.println("Result is "+result);
                return result;
    
    多谢各位

    更新

    正则表达式留下的通配符:

     |
    | '(°Ul") 
    _} °
    =# '
    ( )
    ...................................__+_......_._._.__._._._+._._.
    
    广告1.
    result.replaceAll(\\s[a-zA-ZöäÄüÜß]\\s,”)
    广告2.

    result.replaceAll(“^a-zA-ZöÖäÄüÜß]”,”)

    这是我最后用来解决这个问题的正则表达式:

    result = result.replaceAll("[^a-zA-Z0-9öÖäÄüÜß@\\s]", "");
    

    多谢各位

    regex应该是
    [öÖäÄÜßa-zA-Z]
    我认为第1步还应该删除数字,并保留其中一个空格。类似于
    \\s[a-zA-Z\döäääääÜß]\b的内容也适用于最后一个字符后面没有空格的句子结尾。谢谢,我不想删除数字。我应该用2号还是1号?谢谢你。@Weareberg你必须同时使用这两种。这是一个两步过程。@Xentros first正则表达式不适用于“a b c”-它只删除“b”。它还删除了数字和空格。我不想删除数字和空格。我的错误,当创建这样的帖子,编辑。非常感谢。