本文参考:

https://blog.csdn.net/laoyebin/article/details/5377857(EXCEL里常用的几个正则表达式)

https://blog.csdn.net/catoop/article/details/70247105(Excel 正则表达式提取值)

  • 今天一个朋友让我帮忙将一组 淘宝的宝贝标题里面提取出型号:
  A B
1 商品名称(比较典型的原始数据)

型号(输出结果)

2 美的(Midea) 电饭煲 智能IH加热 家用电饭锅 4L MB-FS4006 MB-FS4006
3 美的(Midea) 多用途锅 4.5L 家用电火锅鸳鸯锅 1500W MC-WLHN32A MC-WLHN32A
4 美的(Midea) 电水壶HE1504a 家用便捷式烧水壶四段温304不锈钢电热水壶 HE1504a
5 美的(Midea)电热水瓶PF708c-50T双出水5段温控 家用5升电热水壶304不锈钢电水壶 PF708c-50T
6 美的(Midea)电压力锅 IH电磁加热可中途加菜钢胆5L高压锅 MY-HT5077P MY-HT5077P
7 美的(Midea) 破壁机 真空辅食机 智能家用多功能果汁机 榨汁机 MJ-BL1507A MJ-BL1507A
8 美的(Midea) 电磁炉 恒匀火 十档火力调节 一键桑拿蒸C21-QH2130(赠不锈钢蒸锅) C21-QH2130
9  美的(Midea)电炖锅  煲汤锅 电砂锅 隔水炖 火山陶釜三胆 4L电炖盅 TGS40W TGS40W
10 美的(Midea)电热水壶即热式不锈钢电水壶 6段温控烧水壶 3L/3升台式饮水机MK-HE3001 MK-HE3001
11 美的(Midea)电磁炉 纤薄匀火滑动触控 家用火锅炉 C21-RH2153火力时间双显示 C21-RH2153
12 美的(Midea) 电磁炉HST2105 红外火力 不挑锅具 红外炉双环控火电陶炉 HST2105
13 美的(Midea)电饭煲 2L智能IH加热 家用迷你智能预约触摸操控 小电饭锅MB-FZ2001 MB-FZ2001
14 美的(Midea)电压力锅 球形内胆可作电饭煲 5L压力锅 家用双胆高压锅YL50Easy301 YL50Easy301
15 美的(Midea)电饼铛MC-JK30Easy301家用煎烤机双面加热煎饼铛早餐机自动断电煎饼机 MC-JK30Easy301
16 美的(Midea) 空气炸锅 家用全自动  高光耐热PP材料白色 MF-WZN3201空气无油炸锅 MF-WZN3201
17 美的(Midea) 多用途锅 多功能家用电火锅 蒸锅 6L MC-LHN30C MC-LHN30C
18 美的(Midea) 电饭煲 3L家用智能预约  不锈钢拉丝机身电饭锅 MB-FS3073 MB-FS3073
19 美的(Midea)电热水瓶 热水壶电水壶304不锈钢 电热水壶热水瓶MK-SP50Colour201 MK-SP50Colour201
20 美的(Midea)多用途锅ZG26EASY401 食品级不锈钢 三层大容量电蒸锅 电蒸笼 ZG26EASY401
  • 从网友catoop的https://blog.csdn.net/catoop/article/details/70247105的文章中引用到如下VBA函数代码:

Function GetStr(rng As Range)
    With CreateObject("VBscript.regexp")
        .Global = True
        .Pattern = "\d+\*\d+\+{0,1}\d{0,}"    '表达式
        If .Execute(rng).Count = 0 Then
            GetStr = ""
        Else
            GetStr = .Execute(rng)(0)
        End If
    End With
End Function

  • 因为我要测试表达式,所以需要在表格中不断的修改正则表达式,于是将上述代码稍加修改后得到:

(代码的用法就不敷述了)

Function GetStr(rng As Range, str As String)
'第一个参数rng为区域保持不变, 添加第二个参数str(作为正则表达式)With CreateObject("VBscript.regexp").Global = True.Pattern = str   '表达式,直接从用户函数的第二个参数中调用If .Execute(rng).Count = 0 ThenGetStr = ""ElseGetStr = .Execute(rng)(0)End IfEnd With
End Function

下面介绍一下我所用的正则表达式以及思路:

  • B1单元格中函数如下:
=getstr(A1,"((?!Midea)(?![0-9]{3,})[\w]{1,19}[-]{1}[\w]{1,19})|(?!Midea)(?![0-9]{3,})[0-9A-Z]{0,19}[-]{0,1}[0-9A-Z]{1}(\w{3,10})")

第二个参数的的内容为从‘ | ’这个符号分成两部分理解:

  1. ((?!Midea)(?![0-9]{3,})[\w]{1,19}[-]{1}[\w]{1,19})
    其中:
    (?!Midea)     表示不包含字符“Midea” 因为每一行里面都有这个
    (?![0-9]{3,})表示不包含以3个及以上的数字组合的开头(故将其放置在前面),目的是为了排除第三行中的1500W
    [\w]{1,19}数字及大小写字母1,19个长度的组合
    [-]{1} 紧接着后面一定会有一个“-”减号
    [\w]{1,19}最后数字及大小写字母1,19个长度的组合,之所以是19这个数只是为了能够包含住所有应该匹配到的型号
    这样的结果就是所有带有“-”减号的型号
  2. (?!Midea)(?![0-9]{3,})[0-9A-Z]{0,19}[-]{0,1}[0-9A-Z]{1}(\w{3,10})"
    这是“|”符号后面的部分,“|”表示“或”的意思,即前面的没有匹配到就用后面的匹配
    前面的一样的就不重复介绍了,从不一样的开始介绍:
    [0-9A-Z]{0,19}开头为数字或大写字母,且长度为0到19位字符的(因为是从0开始的,所以可以有也可以没有)
    [-]{0,1}表示后面紧接零个或者1个“-”减号
    [0-9A-Z]{1}前面两个有可能都没有,也就是说这里有可能是开头的字符,必须为大写字母或数字
    (\w{3,10})最后的字符可以是大小写字母或数字,长度为3到10个字符

源文件下载:

https://download.csdn.net/download/qq_25846269/11159568

EXCEL 使用正则表达式相关推荐

  1. Excel用正则表达式提取出输入正确的身份证号

    今天小编帮助客户整理了一堆省份证号,如下图所示,这里为了做演示输入了一些虚拟号,想要分享的是Excel用正则表达式提取出输入正确的身份证号 (方方格子插件) 1.先看动图演示吧 2.那我了对比我们可以 ...

  2. Excel用正则表达式统一删除文本下划线的操作

    今天小编要和大家分享的是,Excel用正则表达式统一删除文本下划线的操作,如下图所示 (方方格子插件) 1.先看动图演示吧 2.开始之前我们首先选中文本. ​ 3.然后选择方方格子按钮. ​ 4.选择 ...

  3. excel使用正则表达式

    excel文件格式: 需求:用正则表达式提取D列的***,写到E列中 步骤: 1.打开excel中的vb编辑器,点击"文件"--"选项"--"自定义功 ...

  4. EXCEL VBA 正则表达式

    [2011-09-09:http://www.cnblogs.com/dxy1982/archive/2011/09/09/2159246.html] [2010-08-08:http://www.e ...

  5. Excel 使用正则表达式替换字符串

    转自:http://www.pinlue.com/article/2019/03/2011/428277543311.html

  6. excel中用正则匹配_excel 利用正则表达式匹配工作表中的数据

    excel 利用正则表达式匹配工作表中的数据 sheet1中A列放需要匹配的数据 sheet2中A列放正则表达式,可以是多个,但至少一个 匹配到了则在sheet1中C列对应行显示相关标记内容,比如本案 ...

  7. jvm如何实现隐藏_反映一个隐藏的jvm超级大国

    jvm如何实现隐藏 告诉我更多有关反射的信息! (Tell me more about reflection!) Reflection is quite a powerful tool provide ...

  8. easy-excel导入

    使用easy excel导入excel数据到系统 1.自定义校验注解 /*** <p>Excel导入Decimal类型校验</p>*/ @Target(ElementType. ...

  9. Part2_3 正则表达式、Excel表格相关操作

    正则表达式常用操作符 #正则表达式:字符串模式(判断字符串是否符合一定的标准)import re#创建模式对象 pat = re.compile("AA") #此处的AA,是正则表 ...

最新文章

  1. MySQL基础篇:数据类型
  2. sqlserver的四种分页方式
  3. find命令的技巧和一些例子
  4. NDK 编译armebai-v7a的非4字节对齐crash Fatal signal 7 (SIGSEGV) 错误解决
  5. 展开收起功能实现_小房间不一定要拥挤,这样设计实现小户型的大气!
  6. 我的docker随笔7:docker容器与主机之间文件拷贝
  7. 李洪强iOS开发之Foundation框架—结构体
  8. 天玑800处理器支持鸿蒙系统吗,为何Redmi Note 9选择天玑800U处理器?和骁龙750G差距多大...
  9. 软件测试理论基础知识
  10. C#微信、支付宝扫码支付源码
  11. 类似igoogle div拖拽 demo
  12. 小熊派开发板STM32L431_BearPi_LiteOS_E53_ST1调测GPS+2G心得(附代码修正版)
  13. PHP地图规划骑行路径,规划结果 + 骑行路线绘制
  14. 如何修改植物大战僵尸文档
  15. 任何人都有值得学习的地方,横瓜向[水牛党](4618415)请教问题
  16. 重庆工商职业学院计算机专业在哪个校区,重庆工商职业学院地址在哪里
  17. go语言,实现彩云翻译API
  18. 知识图谱发展历程简介
  19. 厦门考计算机竞赛保送北大清华名单,厦门这所学校130人获清华北大等名校保送资格...
  20. java.sql.timestamp_java.sql.Date和java.sql.Timestamp转换

热门文章

  1. Eclipse常用操作总结
  2. Android 设备指纹
  3. 高防云服务器 VS 云服务器
  4. 子网掩码和通配符掩码的区别
  5. iOS之block基础及传值
  6. Windows10+Ubuntu16.04双系统安装
  7. 【数据结构】基于c++的哈夫曼树构造、编码、译码算法实现
  8. 穷人该怎么翻身致富?哪些行业可以让穷人翻身?网友:说的没错。
  9. “揭秘高效索引技巧:从零到一打造优质内容检索系统“
  10. Python:使用matplotlib绘制图表