java - Java Scanner hasNext() 方法无法匹配任何输入
问题描述
我正在编写一个解析程序,我想利用正则表达式来做一些匹配工作。我正在专门寻找 pdf 中包含子字符串“RPR”的行。相关代码如下:
while(parser.hasNext()){
if(parser.hasNext("^.*RPR.*$")){
//Do something.
}
else{
//Do something.
}
}
具体来说,我构造的正则表达式是“^ .RPR. $”。我已经尝试过这种变化,但这是我想出的最好的一种。解析器对象是一个扫描器对象,它正在扫描 PDFTextStripper 输出的文本块。分隔符设置为“\n”。
例如,我尝试匹配的文本行之一如下。
“墙壁 RPR MAINT:钉孔”
但是当我与上面的正则表达式进行比较时,我得到了一个错误的测试。请理解,如果我在另一个测试程序中对字符串进行硬编码,测试工作正常,但是当我使用从 PDF 中提取的文本运行应用程序时,我得到一个否定的结果,我不知道为什么我会得到不同的结果案子。我实际上是将文本行打印到控制台,然后将它们复制并粘贴到测试程序中。
注意事项:
- 我正在解析的字符串对象是使用 PDFBox 中的 PDFTextStripper 对象剥离的 pdf 文档中的文本。
- 我已经打印了我正在解析的字符串,以确保有包含 RPR 实例的行并且有很多行。
- 我知道我也可以使用 String 类的 .contains 方法,但使用正则表达式会更好,因为我的应用程序将来需要扩展。
- 当我将输出复制到一个临时程序并针对我的表达式运行它时,我得到了匹配的结果。这是最令人沮丧的方面,也是为什么我不知道接下来要尝试什么。
任何帮助将不胜感激。
解决方案
推荐阅读
- vue.js - 如何从 coreui 中的组件提供登录验证
- visual-studio - 无法创建 IOS 存档:路径(目录名必须少于 248 个字符)和/或文件名(必须少于 260 个字符)太长
- wordpress - WordPress:如何获取“init”钩子的完整路径?或者它是另一个更好的钩子?
- python - Pytorch 错误:优化器在 Linux 服务器上得到了一个空参数列表
- angular - Angular slickgrid 自定义日期过滤器不适用于日期范围
- c# - 即使在 C# 的显式构造函数中未指定默认值,如何初始化
- json - 如何从 AMFPHP 库中获取 Json 响应?
- python - 如何计算两个相似文件的相同哈希?
- python - Django ModelForm 保存到另一个数据库
- laravel - Laravel:自定义数组验证取决于先前选择的值