excel里碰到「张三 5800、王浩 460、任鱼 280.89」这类没固定分隔符的混排文本,用正则思路提取就很省事:要数字就匹配数字,要字母就匹配字母,要汉字就匹配汉字。这里操作默认用wps表格,要是你用的是microsoft 365,把同款正则表达式套进 regexextract 或者 regexreplace 里就能直接用。
这类公式最好先放到辅助列里测试,别直接覆盖原始文本。碰到编号、金额、姓名混排的情况,先核对输出结果对不对,符合你的实际需求了,再把结果转成纯数值。
第一步
先把所有混排文本整理到同一列,旁边空出一列放提取结果。咱们示例里的原始文本有姓名、金额数字、中文备注,结构没有统一规则,所以后面用正则范围匹配提取,不用按固定字符位置硬截。

第二步
要提取数字的话,直接在结果单元格输 =REGEXP(A2,"[0-9.]+")。其中 [0-9.] 代表匹配所有数字和小数点,后面加的 + 意思是连续匹配1个及以上符合要求的字符。示例里单元格直接返回 5800,说明公式已经从原始文本里捞出了第一段数字。

第三步
要提取字母的话,把正则的匹配范围改成字母就行,公式写 =REGEXP(A2,"[A-z]+")。示例数据里有INDEX、MAX、IF、ROW这类函数英文字符串,结果列会返回第一个匹配到的字母段。如果想要严格限定只匹配大小写英文字母,也可以写成 [A-Za-z]+。

第四步
要提取汉字,把第二个参数改成 "[一-龥]+",完整公式就是 =REGEXP(A2,"[一-龥]+")。这个范围覆盖了所有常用中文字符,从混排文本里捞姓名、仓库名、备注这类连续汉字片段特别好用。
本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd、xlwt和xlutils模块。另外还演示了如何通过Tcl tcom包对excel操作。感兴趣的朋友可以过来看看

REGEXP 语法和参数
REGEXP(原始字符串, 正则表达式, [匹配模式], [替换内容]) 就是专门用正则处理文本的WPS函数。省略第三个参数时,默认走提取逻辑,返回匹配到的内容;第三个参数填 1 是判断模式,返回是否匹配成功;第三个参数填 2 可以配合第四个参数实现内容替换。
| 参数 | 是否必填 | 示例 | 说明 |
|---|---|---|---|
原始字符串 |
必填 | A2 |
要处理的混合文本。 |
正则表达式 |
必填 |
"[0-9.]+"、"[A-z]+"、"[一-龥]+"
|
指定要匹配的数字、字母或汉字范围。 |
匹配模式 |
可选 | 省略、1、2
|
省略偏向提取;1 常用于判断;2 常用于替换。 |
替换内容 |
可选 | "新文本" |
在替换模式下使用,不做替换时不用填。 |
常见错误和扩展示例
如果公式返回 #NAME?,先确认你用的表格软件支不支持REGEXP函数,再检查函数名有没有拼错。要是返回空白,大概率是原始文本里压根没对应类型的字符,或者你写的正则匹配范围太窄。注意公式里的引号、方括号、短横线,全都得用英文半角符号。
只想要提取整数的话,数字提取公式可以改成 =REGEXP(A2,"[0-9]+");想提取第一段大写字母,就用 =REGEXP(A2,"[A-Z]+");如果你用的是Microsoft 365想提取数字,公式也可以写 =REGEXEXTRACT(A2,"[0-9.]+"),要删掉所有非数字字符的话就用 =REGEXREPLACE(A2,"[^0-9.]","")。
处理大批量数据的时候,先把公式向下填充,特意挑几条带小数点、带英文编号、带长段中文姓名的记录抽查。确认结果没漏小数点,也没把字母汉字混到一起,再选中结果列,右键选择性粘贴成纯数值就行。










