kxing 发表于 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等高手帮忙,多谢!

love5173 发表于 2011-3-22 21:41:51

哎!低手直接被无视了

love5173 发表于 2011-3-22 21:49:43

本帖最后由 love5173 于 2011-3-22 22:02 编辑

用捕获就可以了,
\1\2\3   \3 后面加个??就OK了
因为你没给源码 代码我也不给你写了

kxing 发表于 2011-3-22 21:56:06

嘿嘿,楼上的仁兄,你的意思我不太明白。
这串就是要正则的代码:<a href="...">(捕获内容1)</a> <br/>(捕获内容2)<br/>??<a href="...">(捕获内容3)</a>

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

love5173 发表于 2011-3-22 22:01:27

??的意思是重复1次或者0次

afan 发表于 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))

kxing 发表于 2011-3-23 08:24:32

thank you!!!!就是这个意思 。
多谢afan大!!!!

kxing 发表于 2011-3-23 08:33:04

请教下,这个(?:...)?什么含义呢?
第一个例子实在看不懂。。。

lixiaolong 发表于 2011-11-27 04:50:18

回复 1# kxing

正则有很多方法^^
\([^\00-\xff]*\d*\)
页: [1]
查看完整版本: 【已解决】求助正则捕获的问题