找回密码
 立即注册
搜索
楼主: 琥珀有欣

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

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

0

主题

7

帖子

-3

幻币

东方不败

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

使用道具 举报

1

主题

6

帖子

0

幻币

初入江湖

Rank: 1

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

使用道具 举报

0

主题

4

帖子

0

幻币

东方不败

积分
-2
2022-1-19 13:35:26 显示全部楼层
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

主题

4

帖子

0

幻币

初入江湖

Rank: 1

积分
0
2022-1-21 19:56:42 显示全部楼层
太完美了,多想要的效果,
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

幻币

东方不败

积分
-8
2022-1-22 21:26:26 显示全部楼层
\d+\w+(\s)?(\s)?(\w+)?-?(\d+)?(\*\d+[包袋]?)?(\*\d+[包袋]?)?
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

幻币

初入江湖

Rank: 1

积分
0
2022-1-23 01:01:32 显示全部楼层
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, 下载次数: 11)
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

4

帖子

1

幻币

初入江湖

Rank: 1

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

使用道具 举报

1

主题

5

帖子

1

幻币

初入江湖

Rank: 1

积分
4
2022-1-25 02:23:24 显示全部楼层
非常感谢大佬,
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

7

帖子

2

幻币

初入江湖

Rank: 1

积分
8
2022-2-4 16:42:14 显示全部楼层
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学习论坛
回复 支持 反对

使用道具 举报

2

主题

8

帖子

2

幻币

初入江湖

Rank: 1

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

使用道具 举报

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