Node.js环境下使用正则表达式提取PDF转文本后的指定数值
解决方案
你的原有正则仅匹配了前缀文本,未捕获后续数值,且未处理多匹配场景和千分位逗号,以下是可直接运行的实现:
完整实现代码
const fs = require('fs'); const pdfparse = require('pdf-parse'); const pdffile = fs.readFileSync('testdoc3.pdf'); pdfparse(pdffile).then(function (data) { const valueRegex = /Valor\s+(?:del\s+)?fondo\s*(?:de\s*inversi[oó]n)?\s*\([^)]*\)\s*([\d,.]+)/gim; const extractedValues = []; for (const match of data.text.matchAll(valueRegex)) { // 剔除千分位逗号后转为数值 const cleanedValue = parseFloat(match[1].replace(/,/g, '')); extractedValues.push(cleanedValue); } console.log(extractedValues); // 输出符合要求的 [1308906.95, 230942.51] });
正则规则说明
- 忽略大小写、支持跨行匹配,兼容
ó/o拼写差异 - 非捕获组匹配所有前缀文本和括号标注内容,避免冗余捕获
- 捕获组单独提取带千分位的数值字符串,后续处理剔除逗号即可得到标准数值
内容的提问来源于stack exchange,提问作者Daniel Chavarria Chavarrio
相关产品推荐
相关产品推荐

