<h2 class="a-text-normal">匹配我!</h2>
想问下 怎么匹配标签对里的文字呢?
![]() | 1 supman OP 网页里面好多 h2 标签对 但是只匹配这个 class 的 |
![]() | 2 freedomSky 2015-10-10 07:22:32 +08:00 via iPhone <h2[^>]*class="[^"]*a-text-normal[^>]*>\([^<]*\)< |
![]() | 3 freedomSky 2015-10-10 07:23:17 +08:00 via iPhone 大概这么个意思,手机打的,没测试 |
![]() | 4 vmebeh 2015-10-10 08:12:27 +08:00 ![]() <h2\sclass="a-text-normal">(.*)</h2> |
5 linshuizhaoying 2015-10-10 08:30:24 +08:00 以前写过很渣的一个对 ajax 进行转换的东东, Bug 满天飞,但是最后勉强能用,我抄一段给你,你可以看下 function check_single(single){ /* * Code by:Qian * 描述: * 第一遍粗略正则 * 将<div id=xxx class="xxx" xxx="xxx">AAAAAA... </div> * 匹配成 * $1= div id=xxx class="xxx" xxx="xxx" * $2 = AAAAAA... * $3 = div */ var select_Regx = /\<\//g; var regx; //准备处理的数据 var pre_Data = single; //判断是闭合标签还是单标签 var n = pre_Data.match(select_Regx) || []; if(n.length == 1){ //闭合 regx=/\<(.*)*\>(.*)*(\<\/(.*)*\>)/i; }else{ //单标签 img a 这类 regx=/\<(.*)*\>(.*)*(\<\/(.*)*\>)*/i; } var result=regx.exec(pre_Data); One= result[1]; two = result[2]; if(two){//如果有 content 这个值 Content_stack.push(two); } //从$1 中提取标签,不取$1 作为标签是因为 img a 这些没有闭合标签 var regy=/(\b(.)*\b)\s/i; var t = regy.exec(result[1]); if(t){ three = result[1].substring(0,result[1].search('\\s')); RegExp_One(); return getResult(); }else{ return getzero(); } // alert(one); // alert(two); // alert(three); } 这是 github 地址 https://github.com/linshuizhaoying/AjaxRegExp 我知道我水平渣=-=请不要打击我,尽量挑能夸的夸,谢谢 |
![]() | 7 popok 2015-10-10 09:35:31 +08:00 ![]() |
![]() | 8 funsunz 2015-10-10 09:50:46 +08:00 <\s*h2[^>]+>([^<]+)<\/h2\s*> 测试: ```Javascript var patt = /<\s*h2[^>]+>([^<]+)<\/h2\s*>/; var result = patt.exec('<h2 class="a-text-normal">匹配我!</h2>'); alert(result[1]); ``` http://jsfiddle.net/mneLoa5v/ |
![]() | 10 Biwood 2015-10-10 09:54:31 +08:00 @CheungKe 不好意思,刚刚写错了一点,应该是:<img[^/>]*id=['"](.*)['"][^/>]*?[/>] |
![]() | 11 funsunz 2015-10-10 09:55:33 +08:00 <\s*h2[^>]+class\s*=\s*"a\-text\-normal"[^>]*>([^<]+)<\/h2\s*> ```Javascript var patt = /<\s*h2[^>]+class\s*=\s*"a\-text\-normal"[^>]*>([^<]+)<\/h2\s*>/; var result1 = patt.exec('<h2 class="a-text-normal">匹配我!</h2>'); alert(result1[1]); var result2 = patt.exec('<h2 class="a-text-normal">test content</h2>'); alert(result2[1]); ``` http://jsfiddle.net/mneLoa5v/1/ |
![]() | 12 supman OP |
14 CheungKe 2015-10-10 11:45:21 +08:00 <img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]+(?:id\s*=\s*['"]([^'"]+)['"])[^>]*> 我目前在用这个,但是 id 一定要存在。 如果 <img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]+(?:id\s*=\s*['"]([^'"]+)['"]) ? [^>]*> 如果加上 ? ,能获取到 group 但是值是 null 。好象是 repeat group 的问题,不是了解 |
15 luoluoluo 2015-10-10 12:05:16 +08:00 ![]() |
16 CheungKe 2015-10-10 13:15:37 +08:00 |
18 luoluoluo 2015-10-10 16:20:40 +08:00 ![]() |
19 longaiwp 2015-10-10 19:09:26 +08:00 最简单的方案不是 html 解析器? |
20 CheungKe 2015-10-10 20:14:17 +08:00 @luoluoluo 用 dom 解析,如何得到以下两个数组 ["我们", "<img src="xx" id="image_id1">","都是", "<img src="xx" id="image_id2">", "好学生"] ["image_id1", "image_id2"] |
21 CheungKe 2015-10-10 20:15:43 +08:00 原始数据: 我们<img src="xx" id="image_id1">都是<img src="xx" id="image_id2">好学生 |