确实没有可能的正则表达式解决方案适用于任意数量的表数据,并将每个单元格放入单独的后向引用中.这是因为通过反向引用,您需要为要创建的每个backref创建一个独特的开放式窗口,并且您不知道自己有多少个单元格.

使用一种或另一种循环来提取数据没有任何问题.例如,在最后一个,在Perl中,这将是这个,因为$tr已经包含你需要的行:

@td = ( $tr =~ m{

(.*?)}sg );

现在$td [0]将包含第一个< td>,$td [1]将包含第二个,等等.如果你想要一个二维数组,你可以将它包装在这样的循环中以填充新的@cells变量:

our $table; # assume has full table in it

my @cells;

while(my($tr) =~ $table = m{

(.*?)}sg) {

push @cells, [ $tr =~ m{

(.*?)}sg ];

}

现在你可以进行二维寻址,允许$cells [0] [0]等.外部显式循环一次处理一行,内部隐式循环拉出所有单元格.

这将适用于您展示的固定样本数据.如果这对你来说足够好,那就太好了.使用它并继续前进.

什么可能是错的?

但是,关于数据内容的模式实际上有很多假设,我不知道你知道的.首先,请注意我是如何使用/ s以便它不会卡在换行符上的.

但主要问题是最小匹配并不总是你想要的.至少,不是一般情况.有时它们并不像你想象的那么小,匹配的比你想要的多,有时它们只是不够匹配.

例如,像< i>(.*?)< / i>的模式.如果字符串是:将获得比你想要的更多:

foobarness

因为您最终会匹配字符串< i> foo< i> bar< / i>.

另一个常见问题(不包括不常见的问题)是像< tag.*?>这样的模式.可能匹配得太少,比如

现在,如果您使用简单的< img.*?>在那,你只会捕获< img alt =“>,这当然是错误的.

我认为最后一个主要问题是你必须完全忽略解析中的某些事情.这个嵌入式注释的最简单的演示(也是< script>,< style>和CDATA`),因为你可以有类似的东西

some stuff

这会甩掉像< i>(.*?)< / i>这样的东西.

当然,有很多方法可以解决这些问题.一旦你这样做了,这真的是相当多的努力,你会发现你已经构建了一个真正的解析器,完全有很多辅助逻辑,而不仅仅是一个模式.

即便如此,您只处理格式良好的输入字符串.错误恢复和轻柔失败是一种完全不同的艺术.

c 正则提取html,c – 正则表达式以获取HTML表格内容相关推荐

  1. python正则group()的用法—正则提取括号内以及其他符号内内容

    python正则提取括号内以及其他符号内内容,我以前学过一点点正则,但是学的不深,用的正则也是最笨的正则方法,只会group(0). 然而,我今天又看了下正则,发现正则的提取确实好用.无论爬虫还是文本 ...

  2. python花括号怎么取_Python如何正则提取第三层花括号()里的内容?

    举例:我想把如下字符串中第三层花括号的内容提取出来{supportedBandCombination-r10{{{bandEUTRA-r103,bandParametersUL-r10{{ca-Ban ...

  3. nodejs正则提取html,Nodejs正则表达式函数之match、test、exec、search、split、replace

    1. Match函数正则表达式 使用指定的正则表达式函数对字符串惊醒查找,并以数组形式返回符合要求的字符串数组 原型:stringObj.match(regExp)函数 参数:spa stringOb ...

  4. php 正则提取url,php 正则表达式提取网页超级链接url的函数

    function match_links($document) { preg_match_all("']+))[^>]*>?(.*?)'isx",$document,$ ...

  5. linux sed 正则提取字符串,linux正则表达式sed

    sed.awk工具可以实现文本替换并且把替换的文本输出到屏幕上 sed和awk都是流式编辑器,是针对文档的行来操作的.sed通常用来替换操作. 示例的文本内容,以下操作根据此文本.[root@yong ...

  6. excel中用正则匹配_Excel利用正则表达式匹配和替换内容

    近期使用Excel比较多,有一些匹配和替换的内容.平常涉及的比较简单,也就使用If或者VLOOKUP之类的函数.这次使用到正则表达式和VBA,在此记录一下,以防忘记. 打开文件一定要选择EXCEL打开 ...

  7. 【6】爬虫介绍/准备工作/构建流程/获取数据/BeautifulSoup/Re(正则表达式)/正则提取/标签解析/保存数据到excel

    爬虫介绍/准备工作/构建流程/获取数据/BeautifulSoup/Re(正则表达式)/正则提取/标签解析/保存数据到excel 更新时间:2021.9.16 vedio:15,16,17,18,19 ...

  8. java 正则提取$ 中内容_JAVA 使用正则从文字中提取想要的内容

    有时候我们想从一段文字中提取想要的内容,如省市区地址中提取出省市,从股票的数据中提取出关键的价格信息,抓取HTML文件后提取内容等等这些场景,这时我们可以使用JAVA正则表达式帮助我们提取出想要的数据 ...

  9. jmeter提取多个变量的多个值_jmeter用一个正则提取器提取多个值的两种方法

    jmeter中,用json提取器,一次提取多个值,这个很多人都会.但是,用正则提取器一次提取多个,是否可以呢? 肯定,很多人都自信满满的说,可以!形如:token":"(.*?)& ...

最新文章

  1. Geoderma:南土所梁玉婷组-施用粪肥土壤中抗生素抗性基因和金属抗性基因的共存机制...
  2. 洛谷 P3805 manacher算法
  3. cancase lin管脚_汽车里有什么信号是传送到总线(CAN/LIN)上?
  4. Vista共享文件夹无法访问?
  5. js二维数组arr中表示读取第i行第j列的是:_c++ c语言 数组与字符串
  6. python 求子字符串_求子串-KPM模式匹配-NFA/DFA
  7. 从矩阵与空间操作的关系理解CSS3的transform
  8. 我的世界服务器显示fps,我的世界帧数优化攻略 低配、fps低玩家必看
  9. red hat linux 7.1 使用手册!,linux入门教材(Red Hat Linux 7.1)
  10. 十进制进制法_十进制转换成二进制及二进制转换成十进制是如何转换的?
  11. Python3 Scrapy + Selenium + 阿布云爬取拉钩网学习笔记
  12. Introductions和Advisors标签
  13. 汉诺塔怎么加计数次数c语言,C语言算汉诺塔,递归时的输出是怎么一步一步来的?如图,求大神帮忙...
  14. HC-05蓝牙模块连接测试
  15. 李泉老师《高级商务礼仪锻造》
  16. 2017.10.19 測試總結并今日總結
  17. 野火学习笔记(8) —— RCC —— 使用 HSE/HSI 配置时钟
  18. Often Misused: Authentication 一个ip日志你还要我怎样
  19. sql语句练习题,答案
  20. Styles.Rende @Scripts.Render 错误

热门文章

  1. .NET 中依赖注入组件 Autofac 的性能漫聊
  2. 【Azure Show】|第九期 “我的计算机入门之路” 嘉宾秦婷婷汪宇杰文轩
  3. Blazor 准备好为企业服务了吗?
  4. C#实践设计模式原则SOLID
  5. 微软为 Visual Studio 推出新的 Razor 编辑器
  6. Sql Server之旅——第三站 解惑那些背了多年聚集索引的人
  7. .NET CORE(C#) WPF简单菜单MVVM绑定
  8. .NET Conf 2019日程(北京时间)
  9. 自学架构设计?帮你总结了 4 个方法
  10. 感谢诸君的陪伴,见证微信 SDK 的成长,内含黑科技福利