又又正表达式问题

xiangfeidecainiao 2010-07-19 08:55:33

HTML 内容如下:

<div id="gml"><div><img src="http://down.sjxyx.com/images/sjxyx7/1/831417152423.gif" width="100" height="75" alt="蜘蛛侠:剧毒之城(Spider-Man Toxic City)高清版" /></div> <a href="http://down.sjxyx.com/sjxyx7/1/832349562122.cab" ......

我使用此表达式 regex = "<div id=\"gml\"><div><img src=\"(.*?)\" width=\"\\d+\" height=\"\\d+\" alt=\"[\u4e00-\u9fa5\ufe30-\uffa00-9\\-]+\"? /></div>";
捕获group(1)结果如下http://down.sjxyx.com/images/sjxyx7/1/831417152423.gif" width="100" height="75" alt="蜘蛛侠:剧毒之城(Spider-Man Toxic City)高清版" /></div> <a href="http://down.sjxyx.com/sjxyx7/1/832349562122.cab.....

然而我用regex = "<div id=\"gml\"><div><img src=\"(.*?)\".*?alt=\"[\u4e00-\u9fa5\ufe30-\uffa00-9\\-]+\"? /></div>";
group(1)得到我期望的结果http://down.sjxyx.com/images/sjxyx7/1/831417152423.gif

请问为什么会这样。。。

——————————————————————————————————————————————————————————————

还有
只有这样写String regex = "alt=\"[^\"|[\u4e00-\u9fa5\ufe30-\uffa00-9\\-]]+\"";才可以得到结果

这两条--String regex = "alt=[\u4e00-\u9fa5\ufe30-\uffa00-9\\-]+";
|-String regex = "alt=\"[\u4e00-\u9fa5\ufe30-\uffa00-9\\-]+\"";是错的

请问这是为什么?

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("alt=\"蜘蛛侠:剧毒之城(Spider-Man Toxic City)\"");
while(matcher.find())
System.out.println(matcher.group());
...全文
179 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangfeidecainiao 2010-07-24
  • 打赏
  • 举报
回复
自己 顶下
xiangfeidecainiao 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhaolinger2 的回复:]
回答你的第二个问题。
好像你的[\u4e00-\u9fa5\ufe30-\uffa00-9\\-]+这个匹配区段,根本没有匹配到汉字部分。
你第一个匹配字符串之所以能成功匹配,完全是因为你的^\"在起作用。
[/Quote]

啊。。那需要匹配的里面明明有中文。为什么没找到呢?
是什么问题啊。。。
zhaolinger2 2010-07-20
  • 打赏
  • 举报
回复
回答你的第二个问题。
好像你的[\u4e00-\u9fa5\ufe30-\uffa00-9\\-]+这个匹配区段,根本没有匹配到汉字部分。
你第一个匹配字符串之所以能成功匹配,完全是因为你的^\"在起作用。
closewbq 2010-07-20
  • 打赏
  • 举报
回复

public static void main(String[] args){
String htmlStr = "<div id=\"gml\"><div><img src=\"http://down.sjxyx.com/images/sjxyx7/1/831417152423.gif\" width=\"100\" height=\"75\" alt=\"蜘蛛侠:剧毒之城(Spider-Man Toxic City)高清版\"/></div>";
Pattern p=Pattern.compile("src\\s*=\\s*\"([^\"]*)\"");
Matcher m=p.matcher(htmlStr);
while(m.find()){
System.out.println(m.group(1));
}

}
ronniegxq 2010-07-20
  • 打赏
  • 举报
回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧