Regex Can';找不到正则表达式模式以拉取特定列

Regex Can';找不到正则表达式模式以拉取特定列,regex,Regex,正在寻找有关正确正则表达式代码的帮助,以在单独的组中提取发票#、日期、说明、总磁盘和净值 在描述栏中很难找到模式 下面是我对代码的理解示例: [0-9A-Z]+\s(\d{4}-\d{2}-\d{2})+\s([A-Z0-9]+\s) 文本字符串示例: 2020-06-11 Sample Vendor Page 1 A/P Remittance Advice Direct Deposit 2020-06-11 Cheque # 10353 Vendor # 0828 Sample Compa

正在寻找有关正确正则表达式代码的帮助,以在单独的组中提取发票#、日期、说明、总磁盘和净值

在描述栏中很难找到模式

下面是我对代码的理解示例:

[0-9A-Z]+\s(\d{4}-\d{2}-\d{2})+\s([A-Z0-9]+\s)
文本字符串示例:

2020-06-11 Sample Vendor Page 1
A/P Remittance Advice
Direct Deposit 2020-06-11

Cheque # 10353 Vendor # 0828 Sample Company, ULC

Invoice # Date Description Gross Disc Net
===================================================================================
222036 2020-05-06 P2153664 11,237.62 .00 11,237.62
222054 2020-05-06 P2153894 6,582.17 .00 6,582.17
222160 2020-05-01 P2152759 50,895.56 .00 50,895.56
222166 2020-05-01 P2153663 28,046.09 .00 28,046.09
222249 2020-05-05 P2154421 6,030.03 .00 6,030.03
222417 2020-05-05 P2153893 17,676.57 .00 17,676.57
CR01BCFF 2020-06-08 MULTI MCBS 6,872.59- .00 6,872.59-
DM2005R105 2020-06-02 MAY 20 RTN,EXP,N/CH 79.60- .00 79.60-
DM2005R450 2020-06-02 MAY 20 RTN,EXP,N/CH 20.70- .00 20.70-
DM20065533 2020-06-05 VPFP PROGRAM FEES 556.93- .00 556.93-
==========================================
112,938.22 .00 112,938.22

Printed on 2020-06-11 at 13:35 

因为您知道前两列和后三列的模式,所以可以使用

^\w+\s(\d{4}-\d{2}-\d{2})\s(.*?)(\S+)\s(\S+)\s(\S+)$
或者,如果必须在多行文本块上运行它:

(?m)^\w+\s(\d{4}-\d{2}-\d{2})\s(.*?)(\S+)\s(\S+)\s(\S+)\r?$

火柴看起来像

详细信息

  • ^
    -字符串的开头
  • \w+
    -一个或多个单词字符
  • \s
    -空白
  • (\d{4}-\d{2}-\d{2})
    -四位,
    -
    ,两位,
    -
    ,两位
  • \s
    -空白
  • (.*)
    -任何数量的0个或更多字符,尽可能少
  • (\S+)
    -任意1+非空白
  • \s
    -空白
  • (\S+)
    -任意1+非空白
  • \s
    -空白
  • (\S+)
    -任意1+非空白
  • $
    -字符串/行的结尾

考虑到描述是唯一可以包含空格的字段,只要还有3列,就可以匹配尽可能多的空格分隔字符串


说明:

  • \S
    匹配任何非空白字符
  • ^
    匹配字符串的开头
  • 匹配任何字符
  • +
    尽可能匹配
这是一个 请注意,使用了多行标志。因此,每一行都被视为一个单独的字符串

(?m)^([A-Z\d]+) (\S+) (.+) (\S+) (\S+) (\S+)

不要在字符组中使用“|”,这将匹配字符“|”。只需使用:[0-9A-Z]。若要创建组,请将它们用括号括起来,如([0-9A-Z]+)指定您使用的正则表达式引擎/编程语言,它们是不同的。@PoulBak将在Uipath中使用我认为是VB.net的表达式。当文本为5月20日RTN,EXP,N/CH或RTN,EXP,N/CH时,如上图所示,如何拉出“描述”列而不从下一列获取数字?这对我很有用,谢谢。我只是修改了slight,因为它在顶部引入了一些不需要的线条。使用:^([0-9A-Z]+)(\S+)(\S+)(\S+)(\S+)(\S+)。很抱歉,这起作用了;但是,当运行你的演示链接时,仍然会出现顶部的行吗?我需要弄清楚如何只看到细节