【问题标题】:how to extract data in paragraph using regex如何使用正则表达式提取段落中的数据
【发布时间】:2021-06-04 04:04:22
【问题描述】:

客户参考 N139211508474572 输入日期 05/19/2021 额外信息 NEFT IN UTR FROM S S DISTRIBUTOR N139211508474 572TXN REF NO 23621001323

如何提取供应商公司名称,如 S S DISTRIBUTOR,在这个 FROM 在我拥有的多个数据中是恒定的,我做了正则表达式代码来提取客户参考号(?

客户参考号不是固定的,它会包含混合的数字和字母或只有数字。

【问题讨论】:

  • 正则表达式是一种钝器,用于使许多问题屈服。它并不总是正确的(而且几乎从来都不是简单的)解决方案。您是否尝试过计算空格来找到您需要的数据?
  • 另外,请更新您的标签。您使用的是哪种语言?您能否也展示您的代码以及您尝试过的内容?
  • 我需要此代码用于 uipath,使用此代码我正在提取 pdf 数据

标签: python .net regex vb.net c++11


【解决方案1】:

假设供应商公司名称位于关键字FROM 和客户参考号之间,请您尝试一下:

Customer Reference (.*).* FROM (.*) \1

Group2 捕获供应商公司名称S S DISTRIBUTOR

Demo

【讨论】:

  • 感谢回复,
  • 对于使用该代码,输出为(客户参考 N139211508474572 输入日期 05/19/2021 额外信息 NEFT IN UTR FROM S)。这是我得到的输出
  • 由于您没有指定您使用的语言,我最多可以提供 regex101 解决方案。您能否提供您测试的代码以重现上述输出?
  • 我正在使用 uipath RPA 进程提取数据,我不懂语言。
【解决方案2】:

您没有指定您实际使用的语言,正如@some-programmer-dude 提到的,正则表达式不一定是在字符串中搜索的最佳解决方案。

您标记了python,因此假设您正在使用它,您可以考虑使用splitindex 来获取FROM 之后和REF 之前的两个字:

s = "Customer Reference N139211508474572 Entry Date 05/19/2021 Extra Information NEFT IN UTR FROM S S DISTRIBUTOR N139211508474 572TXN REF NO 23621001323"
# Convert all to UPPER case first
s = s.upper()
# Clean unnecessary whitespaces first just in case
s = " ".join(s.split())
# Get all text after FROM
s = s.split("FROM")[1]
# Get all text which are 2 words before REF
index_of_REF = s.split().index("REF")
s = " ".join(s.split()[:index_of_REF-2])
print(s)

这给出了:

S S DISTRIBUTOR

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 2016-04-02
    • 2010-09-26
    • 2021-02-05
    • 2013-09-05
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多