正则表达式获取回复内容中的数字号码

arabicsara 2010-09-09 05:50:56
<div class="post_split"><div class="split_line"></div></div>



<a name="#17"></a>
<div class="post">
<table>
<tr>

<td nowrap="nowrap" valign="top" class="author_anonym"><a name="193831744"></a>60.220.196.*</td>

<td valign="top" class="content">
<p class="floor">17楼</p>




<cc>
<br>id:51045</cc><br/>




</td>
</tr>
<tr>
<td colspan="2" class="info gray">
<ul>




<li>2005-7-5 17:39</li>
<li><a href="#sub" onclick="Post.reply('17');">回复</a></li>







</ul>
</td>
</tr>
</table>
</div>
<div class="post_split"><div class="split_line"></div></div>



<a name="#18"></a>
<div class="post">
<table>
<tr>

<td nowrap="nowrap" valign="top" class="author_anonym"><a name="194783700"></a>221.219.58.*</td>

<td valign="top" class="content">
<p class="floor">18楼</p>




<cc>我的id是5887623242</cc><br/>




</td>
</tr>
<tr>
<td colspan="2" class="info gray">
<ul>




<li>2005-7-6 12:56</li>
<li><a href="#sub" onclick="Post.reply('18');">回复</a></li>







</ul>
</td>
</tr>
</table>
</div>

提取出来有两个:51045,5887623242
我是这样写的:
<p class="floor">\d+楼</p>\w*([0-9]{5,10})\w*</td>
不知错在哪里
...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2010-09-10
  • 打赏
  • 举报
回复
这网络,又连回两楼。。。

Java中的正则,在1棂基础上去掉命名捕获组,取group(1)就行了

String pattern = "(?is)<p\\s*class=\"floor\">\\s*\\d+楼.*?id\\D*(\\d+)";
-过客- 2010-09-10
  • 打赏
  • 举报
回复
不同的语言,支持的正则语法不同,稍复杂点的需求,很难写出各种语言通用的正则的

以下是js下实现
<textarea id="source" style="width:500px; height:200px"></textarea><br />
<input type="submit" onclick="opt()"><br />
<textarea id="result" style="width:500px; height:200px"></textarea><br />
<script type="text/javascript">
function opt()
{
var str = document.getElementById("source").value;
var reg = /<p\s*class="floor">\s*\d+楼(?:(?!id)[\s\S])*id(?:(?!<\/td)\D)*(\d+)/ig;
var result;
while((result = reg.exec(str)) != null)
{
document.getElementById("result").value += result[1] + "\n";
}
}
</script>
-过客- 2010-09-10
  • 打赏
  • 举报
回复
不同的语言,支持的正则语法不同,稍复杂点的需求,很难写出各种语言通用的正则的

以下是js下实现
<textarea id="source" style="width:500px; height:200px"></textarea><br />
<input type="submit" onclick="opt()"><br />
<textarea id="result" style="width:500px; height:200px"></textarea><br />
<script type="text/javascript">
function opt()
{
var str = document.getElementById("source").value;
var reg = /<p\s*class="floor">\s*\d+楼(?:(?!id)[\s\S])*id(?:(?!<\/td)\D)*(\d+)/ig;
var result;
while((result = reg.exec(str)) != null)
{
document.getElementById("result").value += result[1] + "\n";
}
}
</script>
arabicsara 2010-09-10
  • 打赏
  • 举报
回复
获取到的数字内容要在回复内容里面,<p class="floor">16楼</p>回复内容</td>
arabicsara 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyazhe 的回复:]

JScript code
var reg = /<p\s*class=\"floor\">\s*\d+楼.*?id\D*(\d+)/igs;
var res = reg.Exec(yourhtml);
Response.Write(res.$1);

不懂js,
[/Quote]不是,写个可以通用的正则,比如perl支持的,java支持的,都可以
兔子-顾问 2010-09-10
  • 打赏
  • 举报
回复
var reg = /<p\s*class=\"floor\">\s*\d+楼.*?id\D*(\d+)/igs;
var res = reg.Exec(yourhtml);
Response.Write(res.$1);

不懂js,
arabicsara 2010-09-10
  • 打赏
  • 举报
回复
谢谢过客,
能不能写个可以用在js的正则表达式

(?is)<p\s*class="floor">\d+楼.*?([0-9]{5,10})\D*</td>
查找下面文本的时候应该找出:51045和588762324,有没有办法实现?
<div class="post_split"><div class="split_line"></div></div>



<a name="#16"></a>
<div class="post">
<table>
<tr>

<td nowrap="nowrap" valign="top" class="author_anonym"><a name="193831744"></a>60.220.196.*</td>

<td valign="top" class="content">
<p class="floor">16楼</p>




<cc>
<br>id:sfd</cc><br/>




</td>
</tr>
<div class="post_split"><div class="split_line"></div></div>



<a name="#17"></a>
<div class="post">
<table>
<tr>

<td nowrap="nowrap" valign="top" class="author_anonym"><a name="193831744"></a>60.220.196.*</td>

<td valign="top" class="content">
<p class="floor">17楼</p>




<cc>
<br>id:51045</cc><br/>




</td>
</tr>
<tr>
<td colspan="2" class="info gray">
<ul>




<li>2005-7-5 17:39</li>
<li><a href="#sub" onclick="Post.reply('17');">回复</a></li>







</ul>
</td>
</tr>
</table>
</div>
<div class="post_split"><div class="split_line"></div></div>



<a name="#18"></a>
<div class="post">
<table>
<tr>

<td nowrap="nowrap" valign="top" class="author_anonym"><a name="194783700"></a>221.219.58.*</td>

<td valign="top" class="content">
<p class="floor">18楼</p>




<cc>我的id是588762324,sdf32</cc><br/>




</td>
</tr>
<tr>
<td colspan="2" class="info gray">
<ul>




<li>2005-7-6 12:56</li>
<li><a href="#sub" onclick="Post.reply('18');">回复</a></li>







</ul>
</td>
</tr>
</table>
</div>
龍月 2010-09-09
  • 打赏
  • 举报
回复
Regex reg = new Regex(@"(?is)<p\s*class=""floor"">\s*\d+楼.*?id\D*(?<id>\d+)");
-过客- 2010-09-09
  • 打赏
  • 举报
回复
try...

Regex reg = new Regex(@"(?is)<p\s*class=""floor"">\s*\d+楼.*?id\D*(?<id>\d+)");
MatchCollection mc = reg.Matches(yourStr);
foreach(Match m in mc)
{
richTextBox2.Text += m.Groups["id"].Value + "\n";
}

111,129

社区成员

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

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

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