regex 谷歌脚本正则表达式匹配没有结果[已关闭]

qxgroojn  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(118)

20小时前关门了。
Improve this question
我在一个解析pdf的google脚本中有以下代码:

function extractPDFtext(text){
  const regexp = /[w,W,s,S]*(\d{3}).?(\d{3}).?(\d{3}).?(\d{3})?.?(\d{3})?[\w\W]*?(\d+.\d+)/gm;
  try{
    let array = [...text.match(regexp)];
    return array;
  }catch(e){
    let array = ["No items found"] 
    return array;
  }
};
    • 现有正则表达式部分有效(因为pdf的不都是相等的),所以我必须限制词/结果之间的搜索/匹配,当我尝试这样做时,我没有得到结果。**我想检索与ReferenceAmount标签相关的数字,而忽略中间的任何单词和数字。我在这里遇到了一些麻烦,因为在regex101上,我得到了完全匹配+正确的捕获组,但在脚本上,我没有得到任何结果。

这是一个regex example的基础上,什么是建议对我的另一个问题,但最终有同样的问题,我的任何其他尝试:

^Reference\b[^\d\n]*[\t ](\d{3})[\t ]*(\d{3})[\t ]*(\d{3})[\t ]*(\d{3})[\t ]*(\d{3})(?:\n(?!Amount\b)\S.*)*\nAmount\b[^\d\n]*[\t ](\d+(?:,\d+)?)\b

所以我想知道这个问题是正则表达式还是脚本的问题,以及如何解决这些问题。
下面是使用正则表达式的变量文本的一些虚拟文本示例,请记住,每个"标记"后面可以有更多的单词(例如:x一米二氮一x//x一米三氮一x);它可以具有或不具有:

Some dummy text that may have words in common like `reference` or `amount` throughout the document

Reference: 245 154 343 345 345
Entity: 34567    
Amount: 11,11
Payment date: 14/07/2022

Some more text
fcg9iug3

fcg9iug31#

也许你试图用一个命令做太多的事情。试着像我下面展示的那样把它分解。

console.log(text);
let ref = text.match(/Reference.+/gm);
if( ref.length > 0 ) {
  ref = ref[0].match(/\d.+/);
  console.log(ref[0]);
}
ref = text.match(/Amount.+/);
if( ref.length > 0 ) {
  ref = ref[0].match(/\d.+/);
  console.log(ref[0]);
}

执行日志

8:55:50 AM  Notice  Execution started
8:55:50 AM  Info    Some dummy text that may have words in common like `reference` or `amount` throughout the document 

Reference: 245 154 343 345 345 
Entity: 34567 
Amount: 11,11 
Payment date: 14/07/2022 

Some more text

8:55:50 AM  Info    245 154 343 345 345 
8:55:50 AM  Info    11,11 
8:55:50 AM  Notice  Execution completed

相关问题