正则表达式,如何取HTML标签的属性。

<ahref="abc.html"class="a">页面一</a><ahref="eee.html"class="e">页面二</a>我想取页面二的那个a标签的href... <a href="abc.html" class="a">页面一</a><a href="eee.html" class="e">页面二</a>

我想取 页面二的那个a标签的 href 和 页面二 这两个信息. 怎么写.
展开
 我来答
q7779062
推荐于2016-05-09 · 超过15用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:50.3万
展开全部
<a href=\"(.+?)\" class=\"e\">(.+?)</a>

(.+?):“()”是分组匹配,“.”是任意字符匹配,“+”是匹配一到多个,“?”是非贪婪匹配,即最少字符匹配,否则会匹配到一些冗余信息。
整个表达式中class=\"e\"是区分页面一和页面二的关键哦~
追问
(.+?)  好像会把  href  和 class 之间的属性也取出来了。我只要  href的属性值,咋整啊大哥
追答
我用Java测了一下确实不正确,不过在.Net中上面表达式应该是正确的,看来Java中和.Net的正则在内部处理上有些差别,呵呵~~
我把正则又改了一下,测试了一下,是正确的了,Java代码:
String str = "页面一页面二";
String regex = "(.+?)";
Matcher matcher = Pattern.compile(regex).matcher(str);
while(matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
/**
* 输出结果:
* eee.html
* 页面二
*/
上述正则可以直接取想要的值,有些取巧不够严谨,主要是因为你的字符串特征不够明显,[^\"]仅是对双引号进行过滤,如果没有双引号就不行了。如果class="e"这个特征是已知的并且确定的话,我建议这样写:
String regex = "(.+?)";
Matcher matcher = Pattern.compile(regex).matcher(str);
while (matcher.find()) {
if (“e”.equals(matcher.group(2)) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(3));
}
}
/**
* 输出结果:
* eee.html
* 页面二
*/
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式