Foxtable(狐表)用户栏目专家坐堂 → 求正则表达式帮我处理字符


  共有4816人关注过本帖树形打印复制链接

主题:求正则表达式帮我处理字符

帅哥哟,离线,有人找我吗?
304376480
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:340 积分:3794 威望:0 精华:0 注册:2017/9/7 15:20:00
求正则表达式帮我处理字符  发帖心情 Post By:2022/2/12 11:32:00 [只看该作者]

老师您好!

有一堆字符:
 ABC12个, 黄皮椒8斤,螺丝椒2斤,西红柿50斤花菜122个,香芹102斤,蒜苗2斤,青瓜2斤,白菜1个,白萝卜1个,胡萝卜2斤,苦菊半斤,小葱半斤,蒜米一包

要填入表格中,我是想先用正则表达式 在数字前后加上空格,然后用Split分割成数组处理!

这个正则要如何输写?

Dim pattern As String = " "   
Dim txt = "ABC12个, 黄皮椒8斤,螺丝椒2斤,西红柿50斤花菜122个,香芹102斤,蒜苗2斤,青瓜2斤,白菜1个,白萝卜1个,胡萝卜2斤,苦菊半斤,小葱半斤,蒜米一包"
Dim str = System.Text.RegularExpressions.Regex.Replace(txt , pattern ," $0 ")
Output.Show(str)

[此贴子已经被作者于2022/2/12 11:33:33编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112380 积分:572162 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/12 11:41:00 [只看该作者]

先根据逗号拆分:http://www.foxtable.com/webhelp/topics/0245.htm

再使用正则处理
提取数字参考

Dim s As String="黄皮椒8斤"
Dim p As String = "\d+"
Dim r As New System.Text.RegularExpressions.Regex(p)
Dim str = r.Split(s)
p = "\D+"
r = New System.Text.RegularExpressions.Regex(p)
Dim str2 = r.Split(s)
For i As Integer = 0 To str.length - 2
    Output.Show(str(i) & "=" & str2(i+1) & str(i+1))
Next

 回到顶部
帅哥哟,离线,有人找我吗?
hongsejiyi
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:341 积分:5367 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2022/2/12 17:32:00 [只看该作者]

可以参考一下:

 

’代码如下

Dim s As String="ABC12个,黄皮椒8斤,螺丝椒2斤,西红柿50斤花菜122个,香芹102斤,蒜苗2斤,青瓜2斤,白菜1个,白萝卜1个,胡萝卜2斤,苦菊半斤,小葱半斤,蒜米一包"
Dim p As String = "(\d+.?,{0,1})"
Dim r As New System.Text.RegularExpressions.Regex(p)
Dim jg = System.Text.RegularExpressions.regex.replace(s,p,"=$1",RegexOptions.IgnoreCase)
Dim jg2 = jg.split(",")
For i As Integer = 0 To jg2.length-1
    output.Show(jg2(i))
Next

 

 

'运行结果如下:

ABC=12个
黄皮椒=8斤
螺丝椒=2斤
西红柿=50斤花菜=122个
香芹=102斤
蒜苗=2斤
青瓜=2斤
白菜=1个
白萝卜=1个
胡萝卜=2斤
苦菊半斤
小葱半斤
蒜米一包

 

截图如下:



此主题相关图片如下:正则表达式分离数据_2022-02-12_172940.jpg
按此在新窗口浏览图片

 回到顶部
帅哥哟,离线,有人找我吗?
hongsejiyi
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:341 积分:5367 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2022/2/12 17:41:00 [只看该作者]

因为源字符串中,有一个项目没有逗号,如:结果没有【西红柿50斤花菜122个】,所以拆分后的结果虽然正确,但两个结果在一行

解决方案如下:(当然,更改源串增加一个分隔符,也是可以的)

 


图片点击可在新窗口打开查看此主题相关图片如下:正则表达式分离数据_2022-02-12_172940_02.jpg
图片点击可在新窗口打开查看

注:源字符串中,有的不是数字,而是汉字,如: 【小葱半斤】,如果是【 小葱0.5斤】就更好了!


 回到顶部
帅哥哟,离线,有人找我吗?
304376480
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:340 积分:3794 威望:0 精华:0 注册:2017/9/7 15:20:00
  发帖心情 Post By:2022/2/12 18:04:00 [只看该作者]

感谢,感谢!任务已完成图片点击可在新窗口打开查看

 回到顶部