找回密码
 加入
搜索
查看: 2461|回复: 8

[效率算法] 【已解决】求助正则捕获的问题

  [复制链接]
发表于 2011-3-22 21:35:59 | 显示全部楼层 |阅读模式
本帖最后由 kxing 于 2011-3-23 08:26 编辑

下面字符串中捕获内容3可能有也可能没有。

<a href="...">(捕获内容1)</a> <br/>(捕获内容2)<br/>  <a href="...">(捕获内容3)</a>

也就是这段可能出现: <a href="...">(捕获内容3)</a>

我希望有捕获内容3的时候就捕获三个内容,否则捕获前面两个内容。

请求afan等高手帮忙,多谢!
发表于 2011-3-22 21:41:51 | 显示全部楼层
哎!低手直接被无视了
发表于 2011-3-22 21:49:43 | 显示全部楼层
本帖最后由 love5173 于 2011-3-22 22:02 编辑

用捕获就可以了,
\1\2\3     \3 后面加个??  就OK了
因为你没给源码 代码我也不给你写了
 楼主| 发表于 2011-3-22 21:56:06 | 显示全部楼层
嘿嘿,楼上的仁兄,你的意思我不太明白。
这串就是要正则的代码:<a href="...">(捕获内容1)</a> <br/>(捕获内容2)<br/>??<a href="...">(捕获内容3)</a>

但是这段可能出现也可能不出现:<a href="...">(捕获内容3)</a>
发表于 2011-3-22 22:01:27 | 显示全部楼层
??的意思是重复1次或者0次
发表于 2011-3-23 00:17:44 | 显示全部楼层
本帖最后由 afan 于 2011-3-23 00:29 编辑

是这意思不?
#include <Array.au3>
Local $Str = '<a href="...">(捕获内容1)</a> <br/>(捕获内容2)<br/>  <a href="...">(捕获内容3)</a>'
;$Str = '<a href="...">(捕获内容1)</a> <br/>(捕获内容2)<br/>'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '<a.+?>(.+?)</a.+?br/>(.+?)<br/>\h*(?=(?!<a)|<a.+?>(.+?)</a)', 1)
;$Test = StringRegExp($str, '<a.+?>(.+?)</a.+?br/>(.+?)<br/>\h*(?:<a.+?>(.+?)</a)?', 1)
_ArrayDisplay($Test, UBound($Test))
 楼主| 发表于 2011-3-23 08:24:32 | 显示全部楼层
thank you!!!!就是这个意思 。
多谢afan大!!!!
 楼主| 发表于 2011-3-23 08:33:04 | 显示全部楼层
请教下,这个(?:...)?什么含义呢?
第一个例子实在看不懂。。。
发表于 2011-11-27 04:50:18 | 显示全部楼层
回复 1# kxing

正则有很多方法^^
\([^\00-\xff]*\d*\)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-1 08:37 , Processed in 0.074302 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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