找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24168|回复: 10

[问题求助] (已解决)VBS代码多个正则怎样合在一起?

[复制链接]
发表于 2014-8-13 20:35:56 | 显示全部楼层 |阅读模式
本帖最后由 mick00034 于 2014-8-16 19:00 编辑

re.Pattern = "1\d{10}"
re.Pattern = "83\d{6}"
re.Pattern = "61\d{5}"

这样分行的话只执行最后一行,我想三行都起作用,怎么写,谢谢!
发表于 2014-8-13 20:42:18 | 显示全部楼层
  1. re.Pattern = "1\d{10}|83\d{6}|61\d{5}"
复制代码

评分

参与人数 1技术 +1 收起 理由
mick00034 + 1 非常感谢,

查看全部评分

 楼主| 发表于 2014-8-13 23:28:42 | 显示全部楼层
回复 2# CrLf


    问一下,这个 | 符号怎么打?谢谢
发表于 2014-8-13 23:40:05 | 显示全部楼层
回复 3# mick00034


    就是回车上面那个键...
 楼主| 发表于 2014-8-13 23:51:19 | 显示全部楼层
本帖最后由 mick00034 于 2014-8-13 23:58 编辑

回复 4# CrLf
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. txt = fso.OpenTextFile("1.txt",1,false,-1).ReadAll
  3. Set re = New RegExp

  4. re.Pattern = "1\d{10}|83\d{6}"

  5. re.IgnoreCase = True
  6. re.Global = True
  7. For Each m in re.Execute(txt)
  8.     s = s & m & vbCrLf
  9. Next
  10. fso.OpenTextFile("2.txt",2,true).Write s
复制代码
如上述代码,可以提取手机号码和座机,只是座机前面要额外加,如027的话,有修改方法吗? 今天太晚了,希望您有时间的时候,看一下,,,,谢谢
发表于 2014-8-14 11:42:01 | 显示全部楼层
回复 5# mick00034


    re.Pattern = "1\d{10}|(027\-)?83\d{6}"
可以匹配027-83123456,也可以匹配83123456
 楼主| 发表于 2014-8-15 18:33:19 | 显示全部楼层
本帖最后由 mick00034 于 2014-8-15 18:43 编辑

回复 6# apang

没成功,不知其原因是什么?,是否可以增加重复行过滤功能?麻烦您了,谢谢!
处理前:12345678900
             83123456
             12345678900
             83123456
             83123456


处理后:12345678900
            02783123456
发表于 2014-8-15 18:50:05 | 显示全部楼层
回复 7# mick00034


    稍微变通一下就可以了
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. txt = fso.OpenTextFile("1.txt",1,false,-1).ReadAll
  3. Set re = New RegExp
  4. re.Pattern = "1\d{10}|83\d{6}"
  5. re.IgnoreCase = True
  6. re.Global = True
  7. For Each m in re.Execute(txt)
  8.     If Left(m, 2) = "83" Then m = "027" & m
  9.     If InStr(s, m) = 0 Then s = s & m & vbCrLf
  10. Next
  11. WScript.Echo s
复制代码

评分

参与人数 1技术 +1 收起 理由
mick00034 + 1 感谢分享

查看全部评分

 楼主| 发表于 2014-8-16 09:36:46 | 显示全部楼层
本帖最后由 mick00034 于 2014-8-16 09:39 编辑

回复 8# apang

测试了一下,重复行过滤都挺成功,只是也会把无效数字行的一部分当成是号码提出来,这个有点麻烦,举个例子
处理前:
83123456
2014831777888999(此为无效数字行)
处理后:
83123456
83177788

还有一点问一下,apang老师,代码要求1.txt必须是Unicode,一般新建文本文档格式默认是ANSI格式,每次都要先改格式另存挺麻烦,要把代码针对ANSI格式的1.txt的话,代码要全部从新写,还是改动一部分代码就行?谢谢。
发表于 2014-8-16 13:03:12 | 显示全部楼层
回复 9# mick00034


    重新开贴,给出样本,说清要求
 楼主| 发表于 2014-8-16 18:58:46 | 显示全部楼层
回复 10# apang


    谢谢您,上面的代码够用了,另有其他问题,再请教您。!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 18:21 , Processed in 0.021375 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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