作者PurpleCrow (阿乐)
看板RegExp
标题Re: [问题] 请问一个表示法
时间Tue Jan 15 16:42:32 2013
※ 引述《twoseven (Tse)》之铭言:
: 环境 .NET C#
: 我有一串html要抓取 规则是这样
: <tbody>
: <title>我要的资料A</title>
: <by>
: <span>我要的资料B</span> <---此段是我的问题
: </by>
: <by>
: xxxxxxxxxxxxxx
: </by>
: </tbody>
: --------------------------------------------------
: 我要抓的资料固定就是 <tbody>开始 </tbody>结束
: 我写的方法很简单本来用
: <tbody>.*?<title>(?<A>.*?)</title>.*?<by>.*?<span>(?<B>.*?)</span>.*?</tbody>
: 结果後来资料B出现一些状况 有可能会没有<span>出现
: 而这笔资料我也不需要 即是我只要 tbody by里面有 span标签的A跟B就好
: 可是当出现一笔错误资料时候 (譬如第一笔没有span第二笔有)
: 结果他就会取第一笔的资料A 跟第二笔的资料B
: 也就是开头变成第一笔的tbody 结束是第二笔的/tbody
: 请问我要如何排除第一笔错误的格式 而改从第二笔的tbody重新匹配?
: 谢谢
不知道是不是你说的意思
连续资料如下:
<tbody>
<title>我要的资料A</title>
<by>
<span>我要的资料B</span>
</by>
<by>
xxxxxxxxxxxxxx
</by>
</tbody>
<tbody>
<title>我要的资料C</title>
<by>
xxxxxxxxxxxxxx
</by>
</tbody>
<tbody>
<title>我要的资料D</title>
<by>
<span>我要的资料E</span>
</by>
<by>
xxxxxxxxxxxxxx
</by>
</tbody>
<tbody>\s+<title>([^<]+).+?(?:<span>([^<]+)|</tbody>)
得
我要的资料A
我要的资料B
我要的资料C
我要的资料D
我要的资料E
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.179.172