首页 > 解决方案 > 使用 RegEx 匹配单元格中的数据,以便在 Excel 中提取新行

问题描述

我有一个包含许多数据单元格的电子表格,但每个单元格都包含许多行,没有回车或换行。我想通过匹配每个出现的十位数字并抓取数字和所有文本直到下一次出现来创建新行。

例如,这是一个单元格的文本。

8770304350 PRINTER 4610-2CR W/IRON GRAY COVERS (2921)    $750.75  2881057001 PAYMENT DEVICE - VERIFONE MX915 - WALMART CONSIGNE  8770242020 DISPLAY 4820-5GB USB W/ I/O SUPPORT IRON GRAY   $907.27  8770242216 KEYPAD-MSR 3 TRACK IRON GREY    $213.85  2881037020 CONSIGNED- SCANNER DS6878-SR20117WR IMAGER 2D BLUE  

每次有十位数字时,我都想将其拆分为新行,因此最终看起来像这样,其中每行都是新行。

8770304350 PRINTER 4610-2CR W/IRON GRAY COVERS (2921)    $750.75  
2881057001 PAYMENT DEVICE - VERIFONE MX915 - WALMART CONSIGNE  
8770242020 DISPLAY 4820-5GB USB W/ I/O SUPPORT IRON GRAY   $907.27  
8770242216 KEYPAD-MSR 3 TRACK IRON GREY    $213.85  
2881037020 CONSIGNED- SCANNER DS6878-SR20117WR IMAGER 2D BLUE

我尝试自己使用 RegEx,但我要么只匹配数字,要么匹配整个字符串,这对我来说非常复杂。

例如,这尝试了向前看,但最终选择了除第一个数字和最后一个选择之外的所有文本。

(?<=[0-9]{10}).*(?=[0-9]{10})

标签: regexexcel

解决方案


您可以使用

\b\d{10}.*?(?=\s*\b\d{10}|$)

请参阅正则表达式演示。如果可以有换行符,请替换.*?[\s\S]*?.

细节

  • \b- 引导词边界
  • \d{10}- 10 位数
  • .*?- 尽可能少的除换行符以外的任何 0+ 字符
  • (?=\s*\b\d{10}|$)- 在当前位置右侧的正向前瞻,需要
    • \s*\b\d{10}- 0+ 空格、单词边界和 10 位数字
    • |- 或者
    • $- 字符串结束。

推荐阅读