Board logo

标题: [问题求助] 这个VBS正则表达式有些不能理解 [打印本页]

作者: poter    时间: 2012-7-6 20:06     标题: 这个VBS正则表达式有些不能理解

  1. option explicit
  2. dim re, s
  3. set re = new regexp
  4. re.pattern = "<(.*)>.*<\/\1>"
  5. s = "<p>xxxx xxxx xxxx</p>"
  6. if re.test(s) then
  7. msgbox "ok"
  8. else
  9. msgbox "ok1"
  10. end if
复制代码
关于<(.*)>.*<\/\1>这个正则式,第一次出现的<>,它以内的代码为何要加上圆括号,而不直接用<.*>

还有就是<\/\1>该怎么理解,前面能看懂,但是\1有这种用法吗?
作者: powerbat    时间: 2012-7-6 20:23

继续往后看你就会知道的,手册上都有。
作者: poter    时间: 2012-7-6 20:31

回复 2# powerbat


    兄弟,我下载的电子版,只有两百多页,和实体书相差很大。

我的这个版本里对这个正则一点都没有解释哦,麻烦兄弟说一说,万分感谢!
作者: Demon    时间: 2012-7-6 20:31

子匹配和向后引用。
作者: poter    时间: 2012-7-6 20:50

回复 4# Demon


    兄弟 我好像模模糊糊能理解,就是同时匹配到P的意思

但具体还是不太清楚用法,能不能说详细一点?
作者: poter    时间: 2012-7-6 21:05

谢谢两位,刚才测试了一下,突然明白它的用法了

option explicit
dim re, s
set re = new regexp
re.pattern = "(\d*)-\1"
s = "123-123"
msgbox re.test(s)
作者: 乱码    时间: 2012-7-14 11:25

关于 “而不直接用<.*>” 的问题 4楼 Demon 大哥是正解,
我想楼主依然不明白,我解释下、
<(.*)>.*<\/\1>
(.*) 是捕获组,存入内存的,供以后引用的、
\1 表示引用第一个捕获组里的内容
<(.*)>(.*)<\/\1>\2
\2 就是引用第二个捕获组里的内容了、
不知道我的表达,你能不能理解、




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2