正则匹配替换的问题,请正则高手帮忙看看!

tatty_bad 2005-05-07 11:42:24
要进行处理的内容:
<table id=formname style="BORDER-RIGHT: 1px dotted; BORDER-TOP: 1px dotted; BORDER-LEFT: 1px dotted; BORDER-BOTTOM: 1px dotted; BORDER-COLLAPSE: collapse" borderColor=#ff0000 cellPadding=0 width="99%" border=1>
<tr>
<td>
<FORM name=33 action=3333 method=post> </FORM></td>
</tr>
</table>
<table borderColor=#ff0000 cellPadding=0 width="99%" border=1>
<tr>
<td>jfsdhjsdkfs</td>
</tr>
</table>
<table id=formname style="BORDER-RIGHT: 1px dotted; BORDER-TOP: 1px dotted; BORDER-LEFT: 1px dotted; BORDER-BOTTOM: 1px dotted; BORDER-COLLAPSE: collapse" borderColor=#ff0000 cellPadding=0 width="99%" border=1>
<tr>
<td>
<FORM name=2232 action=22322 method=post> </FORM></td>
</tr>
</table>

我需要对上面的内容进行处理,把Form前后的表格代码去除,也就是说,每一个FORM表单,都会放在一个格式的固定表格内,并且对表格定义ID=formname来判断这个表格的存在是否是因为FORM表单的需要。那么现在的要求就是把表单外面的表格去掉,上面的这段代码,是由三个表格组成的,但是只有第一个和第三个是需要去掉的,第二个不需要,判断条件就是Table里面是否存在ID=formname的标签。
我自己写了一个正则来进行处理:
<script language="VBScript">
function setContent(strvalue)
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "(\<table id=formname)(.[^\<]*)(\<\/table\)"
Set Matches = regEx.Execute(strvalue)
For Each Match In Matches
regEx.Pattern = "\<td\>(.*)\<\/td\>"
Set strTemp = regEx.Execute(Match.Value)
For Each Match2 In strTemp
strTemp2 = Replace(Match2.Value, "?", "?")
strTemp2 = Replace(strTemp2, "&", "&")
strTemp2 = Replace(strTemp2, "#", "")
strTemp2 = Replace(strTemp2,"&13;&10;",vbCrLf)
strTemp2 = Replace(strTemp2,"&9;",vbTab)
strvalue = Replace(strvalue, Match.Value, strTemp2)
strvalue = Replace(strvalue, Match.Value, strTemp2)
Next
Next
end function
</script>

就是无法进行替换,后来我发现应该是这段代码被换行(存在vbTab和vbCrLf)了的原因,但是我对这两个处理了之后,最后的几个</td></tr></table>就是无法也放在一行,不知道为什么?!
我想可能我的思路不正确,请正则高手帮我一下,怎么样对这段代码进行处理更好一些?!
目的只有一个,就是把含有Id=formname标签的表格去掉,只保留里面的FORM表单代码。
...全文
254 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
onlytiancai 2005-06-07
  • 打赏
  • 举报
回复
正则表达式里(.[^\<]*)表示什么意思呀,表示0个或多个非"<"字符吗?前面的"."是什么意思呀?
tatty_bad 2005-05-11
  • 打赏
  • 举报
回复
依然解决不了,唉,可怜人。。。
tatty_bad 2005-05-10
  • 打赏
  • 举报
回复
谢谢,我试试看!
tatty_bad 2005-05-09
  • 打赏
  • 举报
回复
晕死,这里成了你们争论的地方了,却不管我的问题了..
pansha 2005-05-09
  • 打赏
  • 举报
回复
假如先替换掉所有换行,也许要一年时间才能搞定,我也不知道有什么好的方法能匹配多行1?
  • 打赏
  • 举报
回复
汗,叫你看编译原理,你要是不懂的话就算了,又不跟谈哲学,我说的是正则表达式

不是script的正则表达式,这个是有区别的,js的正则跟vbs的正则还不一样呢

pansha 2005-05-09
  • 打赏
  • 举报
回复
类似这样的工作,我曾经盗取几十万的网页数据用过!我是用DW中查找替换,也是用了正则!写起来确实很麻烦,费了我很长时间才搞定。
  • 打赏
  • 举报
回复
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。

如果还是不会写,我写一个
rightyeah 2005-05-09
  • 打赏
  • 举报
回复
我正是认为“无论你要怎么样出字符串都能有相应的正则表达式”这句话是错的。理由是正则表达式的匹配过程是单向的,只能向前而不能向后匹配。我不搞什么理论研究,我只抓住一点:如果理论不能解决问题,那它就是错的,至少它在这个问题上是错的。我不反对人们研究各种理论,每种理论只要能够自圆其说,就都有适合它生存的领域。但是我反对把理论的作用扩大化,认为一种理论可以搞定一切。还有,理论再怎么漂亮,如果不能通过实践,那还是假的,没有根基的理论只不过是理论而已,没有用的。
  • 打赏
  • 举报
回复
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
purexu 2005-05-09
  • 打赏
  • 举报
回复
没时间测试,如果是因为换行的原因,试试在 regEx.Global = True 后加上
regEx.MultiLine = True
修改 regEx.Pattern = "\<td\>(.*)\<\/td\>" 为
regEx.Pattern = "<td>((?:.|\n)*)<\/td>"
  • 打赏
  • 举报
回复
正则是计算机语言的基础,但script的正则并不是所有的

我的意思是说你说的话是错的"不要太依赖正则表达式,它也并不是万能的。"

对于计算机语言来说正则意味着所有的,无论你要怎么样出字符串都能有相应的正则表达式,你没有学过编译原理和离散的话好好看看书就是了,我不是讲应用的,应用有很多窍门的事情这个就不好说了

http://blog.csdn.net/liuxiayi666 我的分析对楼主并没有什么帮助,只不过是纯理论性的分析
rightyeah 2005-05-09
  • 打赏
  • 举报
回复
如果兔子认为正则是万能的,那么不妨来试试这个问题。
http://community.csdn.net/Expert/topic/3965/3965954.xml?temp=.9524958
rightyeah 2005-05-09
  • 打赏
  • 举报
回复
回复人: liuxiaoyi666(兔子) ( ) 信誉:114 2005-05-09 08:41:00 得分: 0


对楼上的话,汗一个,其实你要学过编译原理的话就能懂正则的道理了,我曾经仔细研究过正则的数学建模

-------------------------
没有东西是万能的,每一种工具,都应该用在适合的地方,每一个问题都要用适合的工具来解决。
tatty_bad 2005-05-09
  • 打赏
  • 举报
回复
???
tatty_bad 2005-05-09
  • 打赏
  • 举报
回复
对于正则,我相信只要用好了,几乎所有想要的,都可以做到。

只是说我们还不熟练,所以出现这样的情况,兔子,你帮我看看阿。。。

我迷糊了三天了。。
  • 打赏
  • 举报
回复
对楼上的话,汗一个,其实你要学过编译原理的话就能懂正则的道理了,我曾经仔细研究过正则的数学建模
rightyeah 2005-05-09
  • 打赏
  • 举报
回复
不要太依赖正则表达式,它也并不是万能的。有时候还是用脚本处理方便一点
  • 打赏
  • 举报
回复
因为你这个需要做测试的,写一个正则也满麻烦的,你可以给阿信或梅发短消息的
tatty_bad 2005-05-08
  • 打赏
  • 举报
回复
不是吧,这个问题没有人会???
帮帮我哈。。。谢谢了。/
加载更多回复(8)

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧