正则表达式 提取td tr之间的数据

qq_阿漆 2019-04-09 07:12:12
<tr data-period="19001">
<td>19001</td>
<td class="bd"></td>
<td class="ball_brown" data-award="1" data-omit="-1">06</td>
<td class="f_red" data-award="1" data-omit="11">11</td>
<td class="ball_red" data-award="1" data-omit="0">18</td>
<td class="f_red" data-award="1" data-omit="1">1</td>
<td class="ball_red" data-award="1" data-omit="0">23</td>
<td class="f_red" data-award="1" data-omit="7">7</td>
<td class="ball_red" data-award="1" data-omit="0">26</td>
<td class="f_red" data-award="1" data-omit="20">20</td>
<td class="ball_red" data-award="1" data-omit="0">28</td>
<td class="f_red" data-award="1" data-omit="4">4</td>
<td class="ball_blue" data-award="1" data-omit="0">03</td>
<td class="f_blue" data-award="1" data-omit="14">14</td>
<td class="ball_blue" data-award="1" data-omit="0">12</td>
</tr>


我想要 19001 06 18 23 26 28 03 12
...全文
314 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hibey 2019-04-10
  • 打赏
  • 举报
回复
可以使用nuget: Less.Html 使用jquery方式来解析html 示例: var q = HtmlParser.Query(html); q("td:eq(0)").html(); //获取19001
qq_阿漆 2019-04-10
  • 打赏
  • 举报
回复
这我试过了 改为 “Console.Write”的话 只打印 “19901,”
秋的红果实 2019-04-10
  • 打赏
  • 举报
回复
加上using System.Text.RegularExpressions; 和其他using放一起
秋的红果实 2019-04-10
  • 打赏
  • 举报
回复
foreach(Match m in matchs) { Console.Write(m.Value.ToString() + ","); }
qq_阿漆 2019-04-10
  • 打赏
  • 举报
回复
C# 控制台
秋的红果实 2019-04-10
  • 打赏
  • 举报
回复
引用 5 楼 qq_40998052 的回复:
@秋的红果实 请问一下 为什么我这里报 "object"未包含Write的定义,并且找不到可接受第一个object"类型参数的可访问扩展方法"Write"(是否缺少using指令或程序集引用?)" 是少了什么吗?能把全部源码发一下给我吗? 谢谢你
我是在web下做的测试 你是什么程序,winform,还是控制台?
qq_阿漆 2019-04-10
  • 打赏
  • 举报
回复
@秋的红果实 请问一下 为什么我这里报 "object"未包含Write的定义,并且找不到可接受第一个object"类型参数的可访问扩展方法"Write"(是否缺少using指令或程序集引用?)" 是少了什么吗?能把全部源码发一下给我吗? 谢谢你
闭包客 2019-04-10
  • 打赏
  • 举报
回复
正怒月神 2019-04-10
  • 打赏
  • 举报
回复
jquery的class选择器不会用吗?
秋的红果实 2019-04-10
  • 打赏
  • 举报
回复
只有19001?不会吧 把你原来内容的"都换为', 控制台代码

string input = @"<tr data-period='19001'>
             <td>19001</td>
             < td class='bd'></td>
            <td class='ball_brown' data-award='1' data-omit='-1'>06</td> 
            <td class='f_red' data-award='1' data-omit='11'>11</td>
            <td class='ball_red' data-award='1' data-omit='0'>18</td>
            <td class='f_red' data-award='1' data-omit='1'>1</td>
            <td class='ball_red' data-award='1' data-omit='0'>23</td>
            <td class='f_red' data-award='1' data-omit='7'>7</td>
            <td class='ball_red' data-award='1' data-omit='0'>26</td>
            <td class='f_red' data-award='1' data-omit='20'>20</td>
            <td class='ball_red' data-award='1' data-omit='0'>28</td>
            <td class='f_red' data-award='1' data-omit='4'>4</td> 
            <td class='ball_blue' data-award='1' data-omit='0'>03</td>
            <td class='f_blue' data-award='1' data-omit='14'>14</td>
            <td class='ball_blue' data-award='1' data-omit='0'>12</td> 
        </tr>";

MatchCollection matchs = Regex.Matches(input, @"(?<=(ball_red|ball_blue|ball_brown).+>|<td>)\d+?(?=</td>)");
foreach (Match m in matchs)
{
    Console.Write(m.Value.ToString() + ",");

}

Console.Read();

输出,以图为证
十八道胡同 2019-04-10
  • 打赏
  • 举报
回复
引用 10 楼 qq_40998052 的回复:
这我试过了 改为 “Console.Write”的话 只打印 “19901,”
你把你的测试代码 全部贴出来,让红果实 一看就知道了
秋的红果实 2019-04-09
  • 打赏
  • 举报
回复
稍微改动下

string input = @"<tr data-period='19001'>
             <td>19001</td>
             < td class='bd'></td>
            <td class='ball_brown' data-award='1' data-omit='-1'>06</td> 
            <td class='f_red' data-award='1' data-omit='11'>11</td>
            <td class='ball_red' data-award='1' data-omit='0'>18</td>
            <td class='f_red' data-award='1' data-omit='1'>1</td>
            <td class='ball_red' data-award='1' data-omit='0'>23</td>
            <td class='f_red' data-award='1' data-omit='7'>7</td>
            <td class='ball_red' data-award='1' data-omit='0'>26</td>
            <td class='f_red' data-award='1' data-omit='20'>20</td>
            <td class='ball_red' data-award='1' data-omit='0'>28</td>
            <td class='f_red' data-award='1' data-omit='4'>4</td> 
            <td class='ball_blue' data-award='1' data-omit='0'>03</td>
            <td class='f_blue' data-award='1' data-omit='14'>14</td>
            <td class='ball_blue' data-award='1' data-omit='0'>12</td> 
        </tr>";

MatchCollection matchs = Regex.Matches(input, @"(?<=(ball_red|ball_blue|ball_brown).+>|<td>)\d+?(?=</td>)");
foreach(Match m in matchs)
{
    Response.Write(m.Value.ToString() + ",");

}

输出:19001,06,18,23,26,28,03,12, 对这点数据,没问题,若数据更复杂,再提问,补充
秋的红果实 2019-04-09
  • 打赏
  • 举报
回复

string input = @"<tr data-period='19001'>
             < td > 19001 </ td >
             < td class='bd'></td>
            <td class='ball_brown' data-award='1' data-omit='-1'>06</td> 
            <td class='f_red' data-award='1' data-omit='11'>11</td>
            <td class='ball_red' data-award='1' data-omit='0'>18</td>
            <td class='f_red' data-award='1' data-omit='1'>1</td>
            <td class='ball_red' data-award='1' data-omit='0'>23</td>
            <td class='f_red' data-award='1' data-omit='7'>7</td>
            <td class='ball_red' data-award='1' data-omit='0'>26</td>
            <td class='f_red' data-award='1' data-omit='20'>20</td>
            <td class='ball_red' data-award='1' data-omit='0'>28</td>
            <td class='f_red' data-award='1' data-omit='4'>4</td> 
            <td class='ball_blue' data-award='1' data-omit='0'>03</td>
            <td class='f_blue' data-award='1' data-omit='14'>14</td>
            <td class='ball_blue' data-award='1' data-omit='0'>12</td> 
        </tr>";

MatchCollection matchs = Regex.Matches(input, @"(?<=(ball_red|ball_blue|ball_brown).+>)\d+?(?=</td>)");

输出:19001 06 18 23 26 28 03 12
  • 打赏
  • 举报
回复
标准的xml就用linq2xml读取好了,没必要正则
qq_阿漆 2019-04-09
  • 打赏
  • 举报
回复
想用正则表达式 提取数据 19001 06 18 23 26 28 03 12

111,097

社区成员

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

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

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