regex 正则表达式,可以捕捉日期和金额字段,忽略空行和忽略杂项数据

yc0p9oo0  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(135)
    • 目标:仅捕获购买日期、金额和购买项目名称。忽略所有空行(即仅真正为空白的\n),并忽略其他非特定/干扰数据行。然后,在下一个购买分组中重复此操作。好处是项目列表由两个固定行(始终包含日期、文本和金额)进行登记。
  • 好奇:这可以用一个正则表达式来完成吗?如果不行也不用担心。
  • 我正在使用谷歌工作表为这个项目。
    • 示例:**
  1. 02/17 P9342 Acme MARKETs SEATTLE WA $55.11(仅捕获02/17$55.11
    1.空行**(忽略)**
    1....随机数**(忽略)**
    1....购买的项目**(捕获整行文本)**
    1....购买的项目**(捕获整行文本)**
    1....购买的项目**(捕获整行文本)**
    1.... SHIPPING AND TAX(忽略)
    1.空行**(忽略)**
  2. 02/17 MBDS7M Acme MARKETs SEATTLE WA $18.21(开始下一个采购组)
    1.* ...重复购买 *
    "我的努力"
  • 从书挡行获取日期和金额:=REGEXREPLACE(B21,"^(\d{2}/\d{2}) .* ([$0-9.]+)","$1,$2")和退货:一米七纳一和一米八纳一。
  • 获取所有包含数据的行(需要或不需要)并忽略空行:=REGEXREPLACE(C44,"([^\n].*)","$1").
  • 注意:这在regex101编辑器中有效,但在工作表中无效-它只返回相同的数据,空行和所有。就像它忽略了\n。我以前见过这个问题。不知道为什么。
    • 样本数据**
01/17 P9342 Acme MARKETs SEATTLE WA $55.11

       444335766548
       4FT LED Shop Light for garages
       Mr. Pen- Chalk Markers, 6 Pack
       3-In-1 Immersion Hand Blender
       Kasa Smart Light Bulbs that
       BOSTITCH Brad Nails, 18GA, 1-1
       8.5 X 11 Acrylic Sign Holder S
       SHIPPING AND TAX

03/02 MBDS7M Acme MARKETs SEATTLE WA $18.21

       787765778784
       The Moravian Potters in North
       SHIPPING AND TAX
rryofs0p

rryofs0p1#

这匹配一个"块"(注意:打开DOTALL标志):

(\d\d\/\d\d).*(\$[\d.]+).(?:^\s+\d+$)(.*)SHIPPING AND TAX\n\n

捕获:

  • 日期为第1组
  • 与第2组相同量
  • 第3组产品线

参见live demo

相关问题