标题: [问题求助] [已解决]关于正则表达式的问题 [打印本页]
作者: 小爪冰凉君 时间: 2011-11-22 20:59 标题: [已解决]关于正则表达式的问题
本帖最后由 小爪冰凉君 于 2011-11-22 23:15 编辑
我有如下一段数据流:
“<td class=""third""><span><a href=""http://mp3.baidu.com/singerlist/%D6%DC%BD%DC%C2%D7.html"" target=""_blank"">周杰伦</a></span></td>”
其中“third”是标志位(必须检查此字符),想通过正则表达式提取其中的红字部分(包含不定字节数,其中可能有空格等符号)
我的方法是Pattern = (?=class=""third"">\S*\s\S\s.{18})\.{1,10}(?=</a></span></td>)
但是显示不对。。。。
希望达人给予帮助!
另:难道把%D6%DC%BD%DC%C2%D7翻译成汉字比较方便?有没有比较简单的做法?
作者: Demon 时间: 2011-11-22 21:36
- Pattern = "<td class=""third""><span><a .+?>(.+?)</a>"
复制代码
作者: powerbat 时间: 2011-11-22 21:43
vbs/js的正则表达式没有反向预查。
你这个可以用子匹配
Pattern = "(class=""third""[\s\S]*?>(.{1,10})(?=</a></span></td>)"
作者: awk 时间: 2011-11-22 21:44
- sed "s/.*_blank\"\">\(.*\)<\/a>.*/\1/" a.txt >b.txt
复制代码
作者: 小爪冰凉君 时间: 2011-11-22 22:10
回复 2# Demon
我的测试程序是这样的:
- a = "<td class=""third""><span><a href=""http://mp3.baidu.com/singerlist/%D6%DC%BD%DC%C2%D7.html"" target=""_blank"">周杰伦</a></span></td>"
- Set choose = New RegExp
- choose.Global = true
- 'choose.Pattern = "(?=<td class=""third""\S*target=""_blank"">).*(?=</a></span></td>)"
- 'choose.Pattern = "[\u4E00-\u9FFF]*"
- 'choose.Pattern ="(?=class=""third"">\S*\s\S\s.{18})\S{1,10}(?=</a></span></td>)"
- choose.Pattern = "<td class=""third""><span><a .+?>(.+?)</a>"
- For Each colm In choose.Execute(a)
- MsgBox colm.Value
- next
复制代码
改成您说的代码后,运行结果并不能取得预期字符。。。
还有,“+?”这是什么意思呢?
作者: Demon 时间: 2011-11-22 22:24
回复 Demon
我的测试程序是这样的:
改成您说的代码后,运行结果并不能取得预期字符。。。
...
小爪冰凉君 发表于 2011-11-22 22:10
- a = "<td class=""third""><span><a href=""http://mp3.baidu.com/singerlist/%D6%DC%BD%DC%C2%D7.html"" target=""_blank"">周杰伦</a></span></td>"
- Set choose = New RegExp
- choose.Global = true
- 'choose.Pattern = "(?=<td class=""third""\S*target=""_blank"">).*(?=</a></span></td>)"
- 'choose.Pattern = "[\u4E00-\u9FFF]*"
- 'choose.Pattern ="(?=class=""third"">\S*\s\S\s.{18})\S{1,10}(?=</a></span></td>)"
- choose.Pattern = "<td class=""third""><span><a .+?>(.+?)</a>"
- For Each colm In choose.Execute(a)
- MsgBox colm.Submatches(0)
- next
复制代码
好好补充一下正则表达式的知识吧。
作者: 小爪冰凉君 时间: 2011-11-22 22:32
回复 3# powerbat
果然很好用,谢谢帮助!
作者: 小爪冰凉君 时间: 2011-11-22 22:33
回复 4# awk
虽然看不大明白。。。但是谢谢您的帮助
作者: 小爪冰凉君 时间: 2011-11-22 22:38
回复 6# Demon
不知道这Submatches是从哪里得到的?我参考的《VBScript程序员参考手册(第三版)》其中就没有关于Submatches的内容。。。。
作者: broly 时间: 2011-11-22 22:55
碰到不懂的,你可以尝试自己动手去搜索:http://msdn.microsoft.com/zh-cn/site/y27d2s18
作者: powerbat 时间: 2011-11-22 23:06
回复 9# 小爪冰凉君
《Windows脚本技术》(script56.chm)
http://www.bathome.net/thread-1985-1-1.html
3楼代码中的第一个括号多余,复制时没删干净。
作者: 小爪冰凉君 时间: 2011-11-22 23:08
回复 10# broly
我患有一种看到英文就全身无力头晕眼花的病。。。
作者: 小爪冰凉君 时间: 2011-11-22 23:11
回复 11# powerbat
谢谢,我把括号删掉之后已经测试成功了。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |