regex - 使用 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})
解决方案
您可以使用
\b\d{10}.*?(?=\s*\b\d{10}|$)
请参阅正则表达式演示。如果可以有换行符,请替换.*?
为[\s\S]*?
.
细节
\b
- 引导词边界\d{10}
- 10 位数.*?
- 尽可能少的除换行符以外的任何 0+ 字符(?=\s*\b\d{10}|$)
- 在当前位置右侧的正向前瞻,需要\s*\b\d{10}
- 0+ 空格、单词边界和 10 位数字|
- 或者$
- 字符串结束。
推荐阅读
- php - 自定义功能显示在所有页面上
- go - Golang bytes.Buffer - 传递值问题
- oracle - 想要对数据进行四舍五入
- php - 调用数组错误上的成员函数
- json - ResponseSerialization.swift 崩溃(部分申请专业)
- laravel - 如何在 laravel 中搜索内置方法?
- python - 根据特定的布尔条件选择 Numpy 数组中的一些元素
- xml - XQuery 中序列的乘积
- css - React-Bootstrap:将面板宽度设置为 Panel.Collapse 宽度
- android - 在实现谷歌材料设计库时出现错误,因为程序类型已经存在