首页 > 解决方案 > Java Scanner hasNext() 方法无法匹配任何输入

问题描述

我正在编写一个解析程序,我想利用正则表达式来做一些匹配工作。我正在专门寻找 pdf 中包含子字符串“RPR”的行。相关代码如下:

while(parser.hasNext()){
   if(parser.hasNext("^.*RPR.*$")){
      //Do something.
   }
   else{
      //Do something.
   }
}

具体来说,我构造的正则表达式是“^ .RPR. $”。我已经尝试过这种变化,但这是我想出的最好的一种。解析器对象是一个扫描器对象,它正在扫描 PDFTextStripper 输出的文本块。分隔符设置为“\n”。

例如,我尝试匹配的文本行之一如下。

“墙壁 RPR MAINT:钉孔”

但是当我与上面的正则表达式进行比较时,我得到了一个错误的测试。请理解,如果我在另一个测试程序中对字符串进行硬编码,测试工作正常,但是当我使用从 PDF 中提取的文本运行应用程序时,我得到一个否定的结果,我不知道为什么我会得到不同的结果案子。我实际上是将文本行打印到控制台,然后将它们复制并粘贴到测试程序中。

注意事项:

  1. 我正在解析的字符串对象是使用 PDFBox 中的 PDFTextStripper 对象剥离的 pdf 文档中的文本。
  2. 我已经打印了我正在解析的字符串,以确保有包含 RPR 实例的行并且有很多行。
  3. 我知道我也可以使用 String 类的 .contains 方法,但使用正则表达式会更好,因为我的应用程序将来需要扩展。
  4. 当我将输出复制到一个临时程序并针对我的表达式运行它时,我得到了匹配的结果。这是最令人沮丧的方面,也是为什么我不知道接下来要尝试什么。

任何帮助将不胜感激。

标签: javaregexpdfbox

解决方案


推荐阅读