Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2149|回复: 7

[已解决]求修改一个正则表达式

[复制链接]
发表于 2015-3-27 14:41 | 显示全部楼层 |阅读模式
我写的正则表达式:\d{4}(-\d+)*

用来匹配形如:1001,1001-1,1001-1-3421,1001-1-2341-3,9862-3-3-1-223-1这样的字符串,规律是各段数字用“-”分隔,第一段一定是四位,后面各段位数不固定,几段也不固定。

但是现在我的正则表达式连10000这样的也匹配进去了,而像1001-1-2341-3这样的则匹配成了1001-1-2341,求高手帮忙修改正则表达式。

谢谢。
最佳答案
2015-3-27 16:32
非池中 发表于 2015-3-27 15:42
怎么能保证把像第一段是非四位数字剃除出去?像10000这样的。

.Pattern = "\d{4}-\d+(-\d+)*"

自定义函数:
  1. Function TQ$(txt$)
  2.     With CreateObject("VBScript.RegExp")
  3.         .Pattern = "\d{4}-\d+(-\d+)*"
  4.         If .test(txt) Then TQ = .Execute(txt)(0)
  5.     End With
  6. End Function
复制代码
效果:
10000 不匹配,
其余 xxxx-xx-xxx-x都可以匹配。

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-3-27 15:05 | 显示全部楼层
本帖最后由 26759761@qq.com 于 2015-3-27 15:07 编辑

貌似没问题啊
回复

使用道具 举报

 楼主| 发表于 2015-3-27 15:15 | 显示全部楼层
26759761@qq.com 发表于 2015-3-27 15:05
貌似没问题啊

我也找不到问题,可是像10000不应该匹配的也匹配进去了。像2313-1-2312-2这样的匹配不正确。
回复

使用道具 举报

发表于 2015-3-27 15:19 | 显示全部楼层
mid(),find(),SUBSTITUTE()函数结合实现
也可以直接分列就行
回复

使用道具 举报

发表于 2015-3-27 15:24 | 显示全部楼层
非池中 发表于 2015-3-27 15:15
我也找不到问题,可是像10000不应该匹配的也匹配进去了。像2313-1-2312-2这样的匹配不正确。

正则.png

我写的这个和你的那个差不多,你那个应该也没有问题

回复

使用道具 举报

 楼主| 发表于 2015-3-27 15:42 | 显示全部楼层
JLxiangwei 发表于 2015-3-27 15:24
我写的这个和你的那个差不多,你那个应该也没有问题

怎么能保证把像第一段是非四位数字剃除出去?像10000这样的。
回复

使用道具 举报

发表于 2015-3-27 16:32 | 显示全部楼层    本楼为最佳答案   
非池中 发表于 2015-3-27 15:42
怎么能保证把像第一段是非四位数字剃除出去?像10000这样的。

.Pattern = "\d{4}-\d+(-\d+)*"

自定义函数:
  1. Function TQ$(txt$)
  2.     With CreateObject("VBScript.RegExp")
  3.         .Pattern = "\d{4}-\d+(-\d+)*"
  4.         If .test(txt) Then TQ = .Execute(txt)(0)
  5.     End With
  6. End Function
复制代码
效果:
10000 不匹配,
其余 xxxx-xx-xxx-x都可以匹配。

回复

使用道具 举报

发表于 2015-3-27 19:42 | 显示全部楼层
非池中 发表于 2015-3-27 15:42
怎么能保证把像第一段是非四位数字剃除出去?像10000这样的。

\b\d{4}(-\d+)*\b
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 01:48 , Processed in 0.365094 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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