Office中国论坛/Access中国论坛

标题: 提取字符串中的内容 [打印本页]

作者: yanwei82123300    时间: 2019-11-13 10:31
标题: 提取字符串中的内容
本帖最后由 yanwei82123300 于 2019-11-13 10:33 编辑

最近单位正在进行oracle的培训,其中一份报告SO_Paint中字段short NOTE中内容想分段提出相应的内容
请老师们看看如何提取表tblSO_Paint中字段short NOTE中内容
Wuqing Paint Color : 后面的内容,到字符串为"Wuqing"结束
Wuqing Paint Item Number : 后面的内容
这个是字段short NOTE全部内容:
Paint : Wuqing Special PaintWuqing Special Paint : VAPS A-3/3 Coats/PC-Interzinc 52 DFT 50-75/IC-Intergard 475HS DFT 100-200/ FC-Interthane 990 DFT 50-75Wuqing Paint Color : RAL3001 RedWuqing Paint Item Number : Wuqing Special Paint - VAPS A-3 - CBB
非常感谢!!!

作者: roych    时间: 2019-11-14 01:52
access是没有正则查询的。即便VBA中的正则,也比其它语言(例如,JavaScript或者Python)中的正则要弱很多。所以对于复杂表达式,通常很难一次性写好。往往都是需要提取出来再做进一步处理。
  1. Sub test()
  2. '引用:Microsoft VBScript Regular Expressions 5.5
  3.     Dim str As String
  4.     Dim matchs As Object, match As Object
  5.     Dim re As New RegExp
  6.     str = "Paint : Wuqing Special PaintWuqing Special Paint : " _
  7.         & "VAPS A-3/3 Coats/PC-Interzinc 52 DFT 50-75/IC-Intergard " _
  8.         & "475HS DFT 100-200/ FC-Interthane 990 DFT 50-75" _
  9.         & "Wuqing Paint Color : RAL3001 Red" _
  10.         & "Wuqing Paint Item Number : Wuqing Special Paint - VAPS A-3 - CBB"
  11.     re.Global = True
  12.     re.Pattern = "Color(.+?)Wuqing"

  13.     Set matchs = re.Execute(str)
  14.     For Each match In matchs
  15.         Debug.Print match
  16.         'Color : RAL3001 RedWuqing
  17.     Next
  18.     re.Pattern = "Number.*"
  19.     Set matchs = re.Execute(str)
  20.     For Each match In matchs
  21.         Debug.Print match
  22.         'Number : Wuqing Special Paint - VAPS A-3 - CBB
  23.     Next
  24. End Sub
复制代码
如上,打印出来的部分,Color那一段,需要把“Color”和“Wuqing”掐头去尾才能获得想要的结果,而Number部分则需要再处理下开头。是否存在一步到位的做法呢?也许存在,不过我懒得去测试了。
作者: yanwei82123300    时间: 2019-11-14 09:24
老师谢谢您的帮助了感觉在access处理这个数据不如excel方便
作者: roych    时间: 2019-11-14 11:42
yanwei82123300 发表于 2019-11-14 09:24
老师谢谢您的帮助了感觉在access处理这个数据不如excel方便

其实可以用split分割(例如,冒号)后取值的。不过中间没空格的话,还是需要把尾部的Wuqing进行处理下
作者: yanwei82123300    时间: 2019-11-14 12:26
roych 发表于 2019-11-14 11:42
其实可以用split分割(例如,冒号)后取值的。不过中间没空格的话,还是需要把尾部的Wuqing进行处理下

oracle顾问,不给加标点符号,单位的oracle是总部买的,只能在这个框架下进行数据采集,真是无奈,我的数据导出的excel表,想提取short notes字段的数据,按照上面的要求.




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3