正则表达式高手来!!请教

sidney553816092 2012-06-05 09:48:16

这是图片前面的文字<img>http://....com</img>这是图片后面的文字,这是图片前面的文字<img>http://....com</img>这是图片后面的文字

我想达到的效果是:文字用文本显示,图片开始用一张默认的代替然后请求图片链接,请求成功后替换默认的。但是要按照顺序显示文字、图片,应该怎么做到呢??

求指点,谢谢!
...全文
281 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
我的意思是怎么把前面的文字找出来,图片链接找出来,图片后面的文字找出来??

这是图片前面的文字<img>http://....com</img>这是图片后面的文字
[/Quote]

这是图片前面的文字<img>http://....com</img>这是图片后面的文字
“这是图片前面的文字”,“这是图片后面的文字”有什么分界符吗?还是说就是固定是这样的字符串了?
如果是固定的字符串
String s = "这是图片前面的文字<img>http://....com</img>这是图片后面的文字,这是图片前面的文字<img>http://....com</img>这是图片后面的文字";
Matcher m = Pattern.compile("(?i)(.*?)<img>(.*?)</img>(.*?)([,]|$)").matcher(s);
while (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
}
MiceRice 2012-06-05
  • 打赏
  • 举报
回复
顶楼的需求跟5楼的说明不一致。

顶楼的需求相对简单,将<img>xxoo</img>这种片段,转换为一段带JS的HTML脚本即可,比如:
<img onload="loadImg(this, 'http://..../xxoo.jpg')" src="/img/default.jpg" />
然后写个loadImg的函数去负责异步下载图片好了。

至于用正则匹配出<img>xxoo</img>,这个难度貌似就更低了。
html = html.replaceAll("<img>([^<]+)</img>", "<img onload="loadImg(this, '$1')" src="/img/default.jpg" />");


至于5楼的需求,复杂度就比较高了。。。
sidney553816092 2012-06-05
  • 打赏
  • 举报
回复
我的意思是怎么把前面的文字找出来,图片链接找出来,图片后面的文字找出来??

这是图片前面的文字<img>http://....com</img>这是图片后面的文字
sidney553816092 2012-06-05
  • 打赏
  • 举报
回复
我的意思是怎么把前面的文字找出来,图片链接找出来,图片后面的文字找出来??

这是图片前面的文字<img>http://....com</img>这是图片后面的文字
sidney553816092 2012-06-05
  • 打赏
  • 举报
回复
我的意思是怎么把前面的文字找出来,图片链接找出来,图片后面的文字找出来??

这是图片前面的文字<img>http://....com</img>这是图片后面的文字
哟小菇凉 2012-06-05
  • 打赏
  • 举报
回复
有正则表达式问题的地方 都会出现 阿宝的身影 ,继续关注
sidney553816092 2012-06-05
  • 打赏
  • 举报
回复
没人帮忙啊
qybao 2012-06-05
  • 打赏
  • 举报
回复
问题都木有看明白,这应该不是正则的问题

图片更新
<img id=xxx name=xxx src=默认图片 onclick=xxx>yyyy</img>
在onclick事件里修改src为新的图片就可以了

其他的按你现在处理保持不变
001007009 2012-06-05
  • 打赏
  • 举报
回复
<!DOCTYPE HTML>
<html>
<head>
<meta charset="gb2312" />
<title></title>
<style>
</style>
</head>
<body>
<script>
var str = '这是图片前面的文字<img>http://www.baidu.com/img/baidu_jgylogo3.gif</img>这是图片后面的文字,这是图片前面的文字<img>http://www.baidu.com/img/baidu_jgylogo3.gif</img>这是图片后面的文字';
var r1 = /[^,]+/g;
var r2 = /<img>(.+?)<\/img>/;
var arr = str.match(r1);
for( var i = 0, len = arr.length; i < len; i++ ){
var tmp = arr[i].replace(r2, '<img src="$1">');
var div = document.createElement('div');
div.innerHTML = tmp;
document.body.appendChild(div);
}
</script>
</body>
</html>

qybao 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
[img]http://www.baidu.com[/img] 怎么把中间的网址提取出来???正则
[/Quote]
String s = "[img]http://www.baidu.com[/img]";
s = s.replaceAll("\\[img\\](.*?)\\[/img\\]", "$1");
System.out.println(s);
MiceRice 2012-06-05
  • 打赏
  • 举报
回复
主要是[]是正则表达式的特殊字符,所以需要进行转义,其它并没啥特殊的:

String s = "测试字符串";
String pat = "\\[img\\]([^\\[]*)\\[/img\\]";
Matcher m = Pattern.compile(pat).matcher(s);
while (m.find()) {
System.out.println(m.group(1));
}
sidney553816092 2012-06-05
  • 打赏
  • 举报
回复
[img]http://www.baidu.com[/img] 怎么把中间的网址提取出来???正则
无名之辈 2012-06-05
  • 打赏
  • 举报
回复
阿宝何方神圣啊?求拜师!!~
sidney553816092 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 5 楼 的回复:
我的意思是怎么把前面的文字找出来,图片链接找出来,图片后面的文字找出来??

这是图片前面的文字<img>http://....com</img>这是图片后面的文字


这是图片前面的文字<img>http://....com</img>这是图片后面的文字
“这是图片前面的文字”,“这是图片后面的文字”有什么分界符吗?还是说就是固定是这样的字符串了?
如……
[/Quote]

没有分节符的,文字无限制,随便多少。只是图片会用<img></img>包起来,文字是没有包含起来的。
因为目前我在做论坛的帖子这块需要这样的要求

62,621

社区成员

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

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