找回密码
 立即注册
搜索

求大神帮写一个正则表达式

26
回复
544
查看
[复制链接]

1

主题

7

帖子

1

幻币

初入江湖

Rank: 1

积分
9
2021-11-25 10:09:00 显示全部楼层 |阅读模式
求大神帮写一个正则表达式,我自己不太懂这个!
0bf611fa94055fca14f2efaf832a1191.png
工作簿1.zip (11.23 KB, 下载次数: 12)
PPT学习论坛
回复

使用道具 举报

0

主题

4

帖子

-1

幻币

东方不败

积分
-7
2021-12-5 00:28:20 显示全部楼层
Sub 正则替换()
  r = Cells(Rows.Count, 2).End(xlUp).Row
  ar = Range("B2").Resize(r, 2)
  Set reg = CreateObject("VBScript.RegExp")
  reg.Global = True
  reg.Pattern = "[^\w一-龥 *]+"
  For i = 1 To r
  ar(i, 1) = LCase(reg.Replace(ar(i, 1), ""))
  Next
  reg.Pattern = "^([\d\D]*?)(\w[^一-龥]+)([\d\D]+)$"
  For i = 1 To r - 1
  ar(i, 2) = reg.Replace(ar(i, 1), "$2")
  ar(i, 1) = reg.Replace(ar(i, 1), "$1$3$2")
  Next
'  Range("B2").Resize(r, 2) = ar
  Range("L2").Resize(r, 2) = ar '为对照,把处理结果写入L列,不覆盖原数据
End Sub
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

4

帖子

-1

幻币

初入江湖

Rank: 1

积分
2
2021-12-7 10:45:48 显示全部楼层
正则不会,用power query硬解出来,不过去除符号还没好的想法,只能用穷举
商品名称规范.zip (19.32 KB, 下载次数: 15)
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

7

帖子

-2

幻币

初入江湖

Rank: 1

积分
3
2021-12-10 09:55:55 显示全部楼层
b03d1f7af70ace04f9350d218eeb053f.png
非常感谢大佬
还有几个小问题,比如:泉芯家乡花生汤圆400g  会成 泉芯家乡花生汤圆g400
艾可思奖杯鸭太空杯500ML SFC-616 会成 艾可思奖杯鸭太空杯6500ml sfc61
这个可不可以再优化一下呢,如果碰到有数字与英文的时候,就按原来的顺序提取可以吗!
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

6

帖子

1

幻币

初入江湖

Rank: 1

积分
8
2021-12-15 09:50:09 显示全部楼层
Sub 正则替换()
  r = Cells(Rows.Count, 2).End(xlUp).Row
  ar = Range("B2").Resize(r, 2)
  Set reg = CreateObject("VBScript.RegExp")
  reg.Global = True
  reg.Pattern = "[^\w一-龥 \*]+"
  For i = 1 To r - 1
  ar(i, 1) = reg.Replace(LCase(ar(i, 1)), "")
  Next
  reg.Pattern = "^(\W*)(\w[\w\* 包袋盒支片]*)([\d\D]*)$"
  For i = 1 To r - 1
  ar(i, 2) = reg.Replace(ar(i, 1), "$2")
  ar(i, 1) = reg.Replace(ar(i, 1), "$1$3$2")
  Next
  Range("L2").Resize(r, 2) = ar
End Sub
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

7

帖子

-1

幻币

初入江湖

Rank: 1

积分
2
2021-12-16 18:27:46 显示全部楼层
太完美了,多想要的效果,
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

6

帖子

2

幻币

初入江湖

Rank: 1

积分
10
2021-12-24 20:36:36 显示全部楼层
\d+\w+(\s)?(\s)?(\w+)?-?(\d+)?(\*\d+[包袋]?)?(\*\d+[包袋]?)?
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

8

帖子

-1

幻币

初入江湖

Rank: 1

积分
6
2021-12-29 21:54:02 显示全部楼层
Sub RegExp()
  Dim RegExp, i%, Match
  For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
  Set RegExp = CreateObject("vbscript.regexp")
  RegExp.Pattern = "\d+\w+(\s)?(\s)?(\w+)?-?(\d+)?(\*\d+[包袋]?)?(\*\d+[包袋]?)?"
  RegExp.Global = True
  Cells(i, 4) = LCase(RegExp.Execute(Cells(i, 2))(0))
  Cells(i, 5) = LCase(RegExp.Replace(Cells(i, 2), "$1") & RegExp.Execute(Cells(i, 2))(0))
  Next i
End Sub
工作簿1.zip (11.23 KB, 下载次数: 121)
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

5

帖子

1

幻币

初入江湖

Rank: 1

积分
7
2022-1-5 21:21:17 显示全部楼层
=LOWER(REPLACEB(B2,SEARCHB("?",B2),2*LEN(B2)-LENB(B2),"")&MIDB(B2,SEARCHB("?",B2),2*LEN(B2)-LENB(B2)))
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

11

帖子

4

幻币

初入江湖

Rank: 1

积分
17
2022-1-14 14:37:37 显示全部楼层
非常感谢大佬,
PPT学习论坛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册