gpt4 book ai didi

java - 在多行正则表达式模式之后解析文本行

转载 作者:行者123 更新时间:2023-11-30 08:01:49 25 4
gpt4 key购买 nike

我正在尝试解析通过 pdfbox 转换为 txt 的 pdf 文件中的字段。这是我需要提取的字段的示例,“买家姓名和地址:”。这些文档通常包含翻译,并且“:”冒号在“买方名称和地址”之后出现不同数量的字符。下面的例子。

文本文件..
买家姓名和地址/姓名
买办总监:
此处为买家姓名
文本继续..

这是我尝试的模式/扫描代码。

Scanner sc = new Scanner(txtFile);
Pattern p = Pattern.compile("BUYER NAME AND ADDRESS.*:", Pattern.MULTILINE);
sc.findWithinHorizon(p, 0);
String buyer = sc.nextLine();
buyer = sc.nextLine();
System.out.println("Buyer Name: "+buyer);

当文本文件仅是英文时,这才有效,例如BUYER NAME AND ADDRESS:但如果有额外的字符或换行,则失败。如何修复该模式?

最佳答案

给定的正则表达式 "BUYER NAME AND ADDRESS.*:" 匹配“BUYER NAME AND ADDRESS”后跟任意数量的字符,后跟冒号,因此这将匹配最后一个冒号之前的所有内容,因为正则表达式是贪婪的,您可以使用 .*? (非贪婪)来获得所需的行为。此外,您需要将 MULTILINE (^$ 匹配行的开头和结尾)更改为 DOTALL(. 也匹配换行符)才能使此工作正如@stribizhev 所说。

这也可以通过使用[^:]来纠正,[^...]表示不是这些字符。像这样你不需要任何修饰符(我在最后删除了 : 因为如果你这样做你可能不需要它):

"BUYER NAME AND ADDRESS[^:]*"

关于java - 在多行正则表达式模式之后解析文本行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31812046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com