ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3060|回复: 15

[已解决] 懂正则的帮我写个表达式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-4-7 08:45 | 显示全部楼层 |阅读模式
本帖最后由 huang1314wei 于 2017-4-7 11:24 编辑

123.png
如图,上述匹配结果不是我要的,我希望只匹配“采购订单”字符后面首次出现的数字串,也就是说如何只得到结果  4604639344077649  和  123456

我尝试用这个表达式来提取    (?<=采购订单.*?)\d+   但是匹配不出来,这个错在哪里?

&{"yitao":[{"子订单":["5242710348750259"],"商品ID":["547151400503"],"采购订单":"4604639344077649","采购号":"莫买沃洲山"}]}&采购订单,123456

TA的精华主题

TA的得分主题

发表于 2017-4-7 09:11 | 显示全部楼层
楼主你把内容弄出来呀好复制,这样不好测试。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-7 09:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
huanglicheng 发表于 2017-4-7 09:11
楼主你把内容弄出来呀好复制,这样不好测试。

&amp;{&quot;yitao&quot;:[{&quot;子订单&quot;:[&quot;5242710348750259&quot;],&quot;商品ID&quot;:[&quot;547151400503&quot;],&quot;采购订单&quot;:&quot;4604639344077649&quot;,&quot;采购号&quot;:&quot;莫买沃洲山&quot;}]}&amp;

TA的精华主题

TA的得分主题

发表于 2017-4-7 09:25 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-7 09:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
huanglicheng 发表于 2017-4-7 09:25
试试这样 供参考
(?

试过了,匹配不出来

TA的精华主题

TA的得分主题

发表于 2017-4-7 09:30 | 显示全部楼层
huang1314wei 发表于 2017-4-7 09:29
试过了,匹配不出来

可能你用的测试工具不一样?我这能匹配的到
111.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-7 09:34 | 显示全部楼层
huanglicheng 发表于 2017-4-7 09:30
可能你用的测试工具不一样?我这能匹配的到

那很奇怪呢,你这个表达式,我用VBA测试也出不了结果,很郁闷

  1. Sub RegTest()
  2.     Dim oRegExp As Object
  3.     Dim oMatches As Object
  4.     Dim sText As String
  5.     sText = "&amp;{&quot;yitao&quot;:[{&quot;子订单&quot;:[&quot;5242710348750259&quot;],&quot;商品ID&quot;:[&quot;547151400503&quot;],&quot;采购订单&quot;:&quot;4604639344077649&quot;,&quot;采购号&quot;:&quot;莫买沃洲山&quot;}]}&amp;"
  6.     Set oRegExp = CreateObject("vbscript.regexp")
  7.     With oRegExp
  8.         .Global = True
  9.         .Pattern = "(?<=采购订单\D*)\d+"
  10.         MsgBox .test(sText)
  11.         Set oMatches = .Execute(sText)
  12.         For Each c In oMatches
  13.             Debug.Print c.Value
  14.         Next
  15.     End With
  16.     Set oRegExp = Nothing
  17.     Set oMatches = Nothing
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2017-4-7 09:40 | 显示全部楼层
huang1314wei 发表于 2017-4-7 09:34
那很奇怪呢,你这个表达式,我用VBA测试也出不了结果,很郁闷

VBscript的正则对象不支持(?<=exp). 可用下列正则,但最好还是用js解析:
捕获.PNG


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-4-7 09:48 | 显示全部楼层
huang1314wei 发表于 2017-4-7 09:34
那很奇怪呢,你这个表达式,我用VBA测试也出不了结果,很郁闷

试试这种,换个思路
  1. Sub RegTest()
  2.     Dim oRegExp As Object
  3.     Dim oMatches As Object
  4.     Dim sText As String
  5.     sText = "&amp;{&quot;yitao&quot;:[{&quot;子订单&quot;:[&quot;5242710348750259&quot;],&quot;商品ID&quot;:[&quot;547151400503&quot;],&quot;采购订单&quot;:&quot;4604639344077649&quot;,&quot;采购号&quot;:&quot;莫买沃洲山&quot;}]}&amp;采购订单&quot;:&quot;4604649&quot;,&quot;采购号&quot;:&quot;莫买沃洲山&quot;}]}&amp;"
  6.     Set oRegExp = CreateObject("vbscript.regexp")
  7.     With oRegExp
  8.         .Global = True
  9.         .Pattern = "采购订单\D*(\d+)"

  10.         Set oMatches = .Execute(sText)
  11.         For Each c In oMatches
  12.             Debug.Print c.submatches(0)
  13.         Next
  14.     End With
  15.     Set oRegExp = Nothing
  16.     Set oMatches = Nothing
  17. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-7 09:56 | 显示全部楼层
liu-aguang 发表于 2017-4-7 09:40
VBscript的正则对象不支持(?

123.png

用VBA测出来的结果,就是不一样,问题出在哪里?

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 18:47 , Processed in 0.050282 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表