正则表达式匹配结果范围内再次匹配怎么写

问题描述

怎么用一个正则查询文本段落中出所有链接id="top"到id="bottom"之间的内容里的href="xxx"(?<=id="top")[rsS]+(?=id="bottom")用这个可以找出段落范围,但是要怎么才能在这个范围内再找出链接呢?本来想这样写的(?<=id="top"[rsS]+href=")[^"]+(?="[rsS]+]id="bottom")但是毫无疑问会死机

解决方案

解决方案二:
id="top"跟id="top"对于html来说是一样的,而你的所谓正则根本没有包括这种“有一个空格”的情况。要分析html,不是靠匹配你自己发明词法规则,而是先要使用一个html语法分析库对文本进行语法分析,了解了这种程序输出的hemlelements语法树结构,然后才能分析。
解决方案三:
heml->html学生在课堂作业上“玩一玩儿”也就算了。但是对于实际产品开发人员,我们根本不能相信那种依据正则来妄自代替语法分析的程序,那种程序以后就会发现是是浪费了开发费了。在你针对的目标html页面中,他的开发人员程序员可能每隔2、3天就上线一个改动过的版本。在不同版本之间,他知道id="top"跟id='top'是同一个东西,也就是双引号跟单引号是同一个东西,都是能够通过他们上线之前的人工或者自动化测试的。但是如果把单引号之间的id值修改了就不行、就无法通过测试。因此开发网页的程序员知道什么是肯定可以变化的,什么是不变的。如果你分析人家输出的html,连什么是经常可变的都不知道,简单地匹配字眼儿,连双引号改成了单引号这种情况都不能识别,这种程序就根本不是我们所能够接受的、一个正规的程序员写出来的程序。只知道依靠“正则”的程序是不行的。
解决方案四:
说简单点就是用正则取出网页内容中的所有链接但是不包含顶部top的链接和底部bottom的链接,只匹配内容中的链接现在的要求是就用一个正则匹配出满足要求的链接,不能说用第一个正则先找内容再用第二个正则找链接这样的做法可怜的程序员要求从制定的1000多个小购物站中抓取出20万条包含内链接且相仿的内容并分类

时间: 2024-08-25 10:54:27

正则表达式匹配结果范围内再次匹配怎么写的相关文章

《正则表达式经典实例(第2版)》——2.10 再次匹配先前匹配的文本

2.10 再次匹配先前匹配的文本 问题描述创建一个正则表达式来匹配按照yyyy-mm-dd格式的"神奇"日期.神奇日期指的是年份后2位与月份和该月的日期都是相同的数字.例如,2008-08-08就是一个神奇日期.你可以假设目标文本中的所有日期都是有效的.这个正则表达式并不需要考虑去掉像9999-99-99这样的日期,因为它们不会出现在目标文本中.你只需要找到神奇的日期即可. 解决方案 \b\d\d(\d\d)-\1-\1\b 正则选项:无 正则流派:.NET.Java.JavaScri

go语言-正则表达式不让指定重复字符匹配,求高手解答

问题描述 正则表达式不让指定重复字符匹配,求高手解答 50C 正则表达式不让 指定字符串的 指定连续重复个数以上 通过比如:我指以数字组成定长度为10以内的字符串,指定不允许连续6个数字及以上通过1233444444 这个不让通过1433333332 这个不让通过1531224154 这个让通过4135353331 这个让通过要求:不用预查功能因为用的go语言,这种?! ?>= ?=影响效率语法不让通过服务器端写死的,只能用一个正则筛选.求高手解答. 解决方案 1{610}|2{610}|3{6

c# asp net-有没有高手知道正则表达式里面“[^[]?”什么情况下会匹配一次?

问题描述 有没有高手知道正则表达式里面"[^[]?"什么情况下会匹配一次? sql.SqlClause=""alter table [Account] add [FromSiteID] nvarchar(40)"";sql.SqlClause = new Regex(@""s+[^[]?nvarchar"" options).Replace(sql.SqlClause varchar""

收集一些常用的正则表达式(匹配中文字符、匹配双字节字符、匹配HTML标记、匹配空行 and so on~~~)_正则表达式

正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番.我将一些常用的表达式收藏在这里,作备忘之用.本贴随时会更新,请持续关注本站. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"a

《正则表达式经典实例(第2版)》——第 2 章 正则表达式的基本技能 2.1匹配字面文本

第 2 章 正则表达式的基本技能 本章要讲解的问题并不是老板或客户会要求你解决的那一类现实世界中的问题.相反,它们是在你创建和编辑正则表达式来解决现实世界问题的过程中会遇到的技术性问题.例如,第一个实例会解释如何使用一个正则表达式来匹配字面文本(literal text),以及如何处理正则表达式中有特殊含义的字符.这个问题本身并不是很重要,因为如果你只是要查找字面文本,并不需要使用正则表达式.但是,当创建正则表达式的时候,你可能会需要按照字面来匹配某些文本,那么你就需要知道哪些字符需要转义.实例

行尾匹配-perl5中z和匹配字符串结尾的差异是什么

问题描述 perl5中z和Z匹配字符串结尾的差异是什么 我在使用z和Z匹配的时候没发现差异,各位能不能帮忙解释一下,下面是代码: #!/usr/bin/perl use 5.010; use strict; use warnings; $_ = ""This is a wilma line barney is on another line but this ends in fred and a final dino lines""; if(/lineZ/){ pr

数据库-mysql进行匹配的时候可否调整匹配的顺序?

问题描述 mysql进行匹配的时候可否调整匹配的顺序? 在数据库中有titlecontent字段,如果有两个相同的title,都叫ABC,而我想要的是第一个ABC对应的content,但是每次用where title=""ABC"";匹配到的都是第二个content内容,可不可以改变匹配的顺序呢? 解决方案 content一样不一样?如果不一样,可以这么写select title from table where title = 'ABC' order by con

c中怎么实现查看两个字符串的匹配情况,返回能够匹配的字符的个数

问题描述 c中怎么实现查看两个字符串的匹配情况,返回能够匹配的字符的个数 比如,一个字符串是w_angqmab,,,另一个字符串是w+bangemx,,我想编写一个函数,,让它返回后一个字符串与前一个字符串得到匹配字符的个数,,,,我该怎么编写函数啊,,求大神们指点!!!!万分感谢!!!急急急急---- 解决方案 排序后再比较计数. 用C#演示一下,C的处理方式类似. using System; using System.Collections.Generic; using System.Lin

jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配

指定元素中包含 id 属性的, 如: $("span[id]")  代码如下: <span id="span1" name="S1">AAA</span><br/> <span id="span2" name="S2">BBB</span><br/> <span name="Sx3">CCC</sp