Regex 使用正则表达式捕获不同形式的数字

Regex 使用正则表达式捕获不同形式的数字,regex,Regex,我们正在接收保证金提供商发送的文件,其中包括按照特定格式分配给其账户的保证金金额的详细信息;我们将此作为*.csv文件内容接收 示例值如下所示(第一行是标题): 日期(日/月/年),客户名称,客户ID,借款能力 2019年11月27日,史密斯父子(私人)有限公司,JKB1234LC,6000000.00 2020年11月3日,XXXX银行股份有限公司/史密斯博士,JKB12345LC,“10000000” 2019年11月27日,A.A.Smith夫人和A.A.Smith夫人,JKB1123LC

我们正在接收保证金提供商发送的文件,其中包括按照特定格式分配给其账户的保证金金额的详细信息;我们将此作为
*.csv
文件内容接收

示例值如下所示(第一行是标题):

日期(日/月/年),客户名称,客户ID,借款能力
2019年11月27日,史密斯父子(私人)有限公司,JKB1234LC,6000000.00
2020年11月3日,XXXX银行股份有限公司/史密斯博士,JKB12345LC,“10000000”
2019年11月27日,A.A.Smith夫人和A.A.Smith夫人,JKB1123LC,20000000.00
2020年3月11日,C.史密斯先生,JKB9087LC,0
2019年11月27日,I.A.史密斯夫人,JKB9876LC,0.00

我使用了以下
Regex
表达式来识别账户和保证金值:

(?'Account'JKB[0-9]+LC)(?'Amount',(?<=LC,)\d+\.\d*)

(?'Account'JKB[0-9]+LC)(?'Amount',(?这里有一个你可以用来识别每个区块的方法(它避免了客户端名称包含LC的情况,比如在'PLC'中)

(?'Date'\d\d?\/\d\d?\/\d{4}),(?'Client'[^]*?“[^,]*?),(?'Account'[^,]*?),“(?'Amount'[0-9,.]*)”?

详情:

  • 匹配日期:一个或两个数字表示日期/一个或两个数字表示月份/4个数字表示年份
  • 然后一个
    不在日期或客户机中
  • 匹配客户端:
“后面跟一些字符,直到下一个
,或者一些字符不是
  • 然后一个
    不在客户端或帐户中
  • 匹配帐户:一些字符不是
    (我只假设客户端id中没有
  • 然后是一个
    ,可能是一个
    ,既不在账户上也不在金额上
  • 匹配金额:任意数字、点或逗号
  • 然后是可选的
    (可以从正则表达式中安全删除)

  • 我想知道为什么你想使用正则表达式,考虑到大多数语言都有用于将CSV文件读入易于操作的对象的工具。如果你使用特定语言来完成一般任务,你可以考虑添加一个标签来使用该语言,并邀请读者使用正则表达式或主要使用语言的答案。你确定了。是吗?:
    ('Amount',(?@CarySwoveland)我在
    Azure
    中实现了一个简单的
    函数应用程序
    ,目的是在我的解决方案在云中旋转时将
    CSV
    转换为
    JSON
    。嘿@Jupiter非常感谢!我能够将
    Regex
    表达式构建为
    (?'Account'JKB[0-9]+LC)(?'Amount',(?@PoulBak you表达式不匹配所有情况:(