<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 1
<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 我知道我水平渣=-=请不要打击我,尽量挑能夸的夸,谢谢 |
6
CheungKe 2015-10-10 09:24:29 +08:00
我也来个
<img src="xxx" ... id="xxx"> 要求匹配出 id 的值 注: id 可能为空 |
7
popok 2015-10-10 09:35:31 +08:00 1
|
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 1
|
16
CheungKe 2015-10-10 13:15:37 +08:00
|
18
luoluoluo 2015-10-10 16:20:40 +08:00 1
|
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">好学生 |