帮忙修改一下这个正则表达式.

zhangliu_521 2007-04-14 11:08:41
源码:
<ol class='list'><li class='GameName'>游戏</li><li class='ServerName'> 服务器</li><li class='ServerPrice'>单价</li><li class='ServerQuantity'> 收货量</li><li class='ServerState'>状态</li><li class='ServerOrder'>操作</li></ol> <ol class='list'><li class='GameName'>魔兽欧服</li><li class='ServerName'> 德 Anetheron -H</li><li class='ServerPrice'>0.18 元/G</li><li class='ServerQuantity'> 6640</li><li class='ServerState'><font color=red>紧急</font></li><li class='ServerOrder'><a href='OrderStepFirst.asp?ServerId=26'>下单</a></li></ol>
<ol class='list'><li class='GameName'>魔兽欧服</li><li class='ServerName'> 德 Arthas -A</li><li class='ServerPrice'>0.12 元/G</li><li class='ServerQuantity'> 11000</li><li class='ServerState'><font color=red>紧急</font></li><li class='ServerOrder'><a href='OrderStepFirst.asp?ServerId=43'>下单</a></li></ol>
<ol class='list'><li class='GameName'>魔兽欧服</li><li class='ServerName'> 德 Arthas -H</li><li class='ServerPrice'>0.16 元/G</li><li class='ServerQuantity'> 17480</li><li class='ServerState'><font color=red>紧急</font></li><li class='ServerOrder'><a href='OrderStepFirst.asp?ServerId=44'>下单</a></li></ol>
<ol class='list'><li class='GameName'>魔兽欧服</li><li class='ServerName'> 德 Azshara -H</li><li class='ServerPrice'>0.14 元/G</li><li class='ServerQuantity'> 8200</li><li class='ServerState'><font color=red>紧急</font></li><li class='ServerOrder'><a href='OrderStepFirst.asp?ServerId=54'>下单</a></li></ol>
<ol class='list'><li class='GameName'>魔兽欧服</li><li class='ServerName'> 德 Baelgun -A</li><li class='ServerPrice'>0.15 元/G</li><li class='ServerQuantity'> 8079</li><li class='ServerState'><font color=red>紧急</font></li><li class='ServerOrder'><a href='OrderStepFirst.asp?ServerId=55'>下单</a></li></ol>

采集规则:
<ol[^>]*?><li[^>]*?>[^<]*?</li><li[^>]*?>(?<area>[^-]*?)-(?<type>[^<]*?)</li><li[^>]*?>(?<price>0\.\d{1,2})[^<]*?</li><li[^>]*>(?<num>[^<]*?)</li><li[^>]*?><font[^>]*?>(?<state>[^<]*?)</font></li>

结果:
服务器</li><li class='ServerPrice'>单价</li><li class='ServerQuantity'> 收货量</li><li class='ServerState'>状态</li><li class='ServerOrder'>操作</li></ol> <ol class='list'><li class='GameName'>魔兽欧服</li><li class='ServerName'> 德 Anetheron H 0.18 6640 紧急
德 Arthas A 0.12 11000 紧急
德 Arthas H 0.16 17480 紧急
德 Azshara H 0.14 8200 紧急
德 Baelgun A 0.15 8079 紧急

问题:
服务器</li><li class='ServerPrice'>单价</li><li class='ServerQuantity'> 收货量</li><li class='ServerState'>状态</li><li class='ServerOrder'>操作</li></ol> <ol class='list'><li class='GameName'>魔兽欧服</li><li class='ServerName'> 
是不想要的,,但怎么修改都不能去掉.谢谢...
...全文
211 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
谢谢了..
-过客- 2007-04-14
  • 打赏
  • 举报
回复
或者这样写,就不用考虑“[HA]”后面的具体情况了

:\s*?(?<area>[\s\S]*?)\s+?(?<type>\b[HA]\b)
-过客- 2007-04-14
  • 打赏
  • 举报
回复
才看到上面的回复,那这样

:\s*?(?<area>[\s\S]*?)\s+?(?<type>[HA])(?=<|\s|$)

是几个单词无所谓,因为前面的“:”和后面的“[HA]”,已经把范围限定死了,只要把“[HA]”两侧的条件限定一下就行了
-过客- 2007-04-14
  • 打赏
  • 举报
回复
因为Hakkar 这里可能包含H或A,所以不能用[^HA],如果area里可能有回车,那就那.换成[\s\S],因为后面的H或A肯定存在,所以[HA]这样写就可以,但要判断一下两侧的条件,嗯,前面的\s*?还是用你的\s+好一点

:\s*?(?<area>[\s\S]*?)\s+?(?<type>[HA])(?=\s|$)
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
我也先把这个做了,还是回学校把毕业证领了...

学习+工作+生活
生活还是很重要的...
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
"> MF: Aegwynn H</font>
中点的Aegwynn有时是二个单词,有时是三个...
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
不好意思
是这样的
<td vAlign="center" align="middle" width="45" height="20">
<font color=608542>满仓</font>
</td><td width="452" height="20">
<table cellSpacing="0" cellPadding="0" width="450" border="0" align="center">
<tr><td width="172"><font style="font-size: 9pt" face="Arial"> MF: Aegwynn H</font></td>
<td width="86">¥<b>
0.73</b>/金币</td>
<td width="79" align="center">0</td>
<td width="120">
<a href="shangpin.asp?id=845"><img src=images/cart.gif border=0></a>
-过客- 2007-04-14
  • 打赏
  • 举报
回复
大型项目??
------
学习+工作+生活

主要是不太清楚你最后一项是什么样的,所以后面加了(?=\s|$),用下面的试下吧

:\s*?(?<area>.*?)\s*?(?<type>[HA])(?=\s|$)
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
[^:]*?:(?<area>[\s\S]*?)(?<type>H<|A<)

结果:
onechewer H< 0.7 100 紧急
Burning Blade A< 0.46 500 紧急
Hakkar A< 0.62 500 紧急
Hakkar H< 0.72 100 紧急
Malorne H< 0.77 100 紧急
Shu halo H< 0.75 100 紧急
Twisting Nether H< 0.85 100 紧急
Aegwynn A< 0.64 0 满仓
Aegwynn H< 0.73 0 满仓
Aerie Peak A< 0.63 0 满仓
Aerie Peak H< 1.2 0 满仓
Agamaggan A< 0.64 0 满仓

多了个A< H<
这个<又无法去掉了
wuhengqiang 2007-04-14
  • 打赏
  • 举报
回复
是不是哟,有这么老火啊
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复

我的
[^:]*?:(?<area>[^HA]*?)\s+(?<type>H|A)
直接遭受抛弃
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
估计这一年是闲不下来了
===========================>>
大型项目??
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
 MF: Burning Blade A
 MF: Hakkar A
 MF: Malorne H
 MF: Shu halo H
 MF: Twisting Nether H
 MF: Aegwynn A
...................
...................

再请问下怎提取Burning Blade ,Hakkar .....到<area>组.
提取 A或者H到<TYPE>中??
麻烦过客兄再指点一下..
-过客- 2007-04-14
  • 打赏
  • 举报
回复
呵呵,最近一直太忙,很少有时间出去逛,关注CSDN的时间也少了,估计这一年是闲不下来了
wuhengqiang 2007-04-14
  • 打赏
  • 举报
回复
up
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
头晕了,
过客兄怎么一天都在啊..
没出去晃晃....
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
谢谢
知道了
不包含<和-
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
问题解决..
过客兄这个[^<-]做何解释?谢谢..
我写哪个怎么就不能过滤掉第一个啊?
-过客- 2007-04-14
  • 打赏
  • 举报
回复
(?<area>[^-]*?)
----->
(?<area>[^<-]*?)
zhangliu_521 2007-04-14
  • 打赏
  • 举报
回复
关键是第一次匹配把
服务器</li><li class='ServerPrice'>单价</li><li class='ServerQuantity'> 收货量</li><li class='ServerState'>状态</li><li class='ServerOrder'>操作</li></ol> <ol class='list'><li class='GameName'>魔兽欧服</li><li class='ServerName'> 德 Anetheron H 0.18 6640 紧急
这个全部匹配下来了,没理由啊.....

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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