You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写正则表达式提取PDF中Forma de pago后的60 días F.F内容

Java正则提取PDF指定字段解决方案

问题原因

你之前使用的正则\W*(Forma de pago):(\s)\W*仅能匹配到「Forma de pago」字段本身和前后的少量空白/非单词字符,没有设置终止匹配边界,也没有捕获后续目标内容,因此无法完成需求。

可行实现方案

正则规则设计

我们采用非贪婪匹配实现指定区间内容提取,Java中转义后的正则为:
Forma de pago:\\s*(.*?)\\s*60 días F\\.F

  • \\s*适配字段前后可能存在的任意数量空白、换行符
  • 非贪婪匹配.*?保证只匹配到第一个「60 días F.F」就终止,不会多匹配后续内容
  • 终止符中的.做了转义处理,避免被识别为正则通配符

完整代码实现

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ExtractPaymentInfo {
    public static void main(String[] args) {
        // 替换为实际从PDF中提取的完整文本
        String pdfExtractedText = "此处填入你从PDF提取的全部文本内容";
        
        // 编译正则,开启DOTALL模式支持跨行匹配,若确认内容无换行可移除该参数
        Pattern pattern = Pattern.compile("Forma de pago:\\s*(.*?)\\s*60 días F\\.F", Pattern.DOTALL);
        Matcher matcher = pattern.matcher(pdfExtractedText);
        
        if (matcher.find()) {
            // 提取两个字段之间的内容
            String targetContent = matcher.group(1);
            // 按空白/换行拆分得到3个目标元素
            String[] threeElements = targetContent.split("\\s+");
            
            // 输出验证
            for (String element : threeElements) {
                System.out.println("提取到的元素:" + element);
            }
        }
    }
}

适配特殊场景的优化

  • 若提取的文本中「60 días F.F」存在空格波动(比如多空格、点前后有空格),可以将终止符部分的正则修改为60\\s*días\\s*F\\s*\\.\\s*F适配格式差异
  • 若存在大小写不一致的情况,编译正则时新增Pattern.CASE_INSENSITIVE参数即可

内容的提问来源于stack exchange,提问作者Shibaji Sanyal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:24:07