正则提取两个字符串之间的内容的问题

sctongyi 2011-02-21 08:30:28
需处理的如下内容
{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}

处理后要得到如下代码
<a href="/uploads/allimg/110219/1-110219142110.jpg" target="_blank"><img src="/uploads/allimg/110219/1-110219142110-lp.jpg" /></a><a href="/uploads/allimg/110219/1-110219142111.jpg" target="_blank"><img src="/uploads/allimg/110219/1-110219142111-lp.jpg" /></a>

谢谢大家
...全文
247 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sctongyi 2011-02-22
  • 打赏
  • 举报
回复
我把dede这样的字符改为de1de后 居然就可以,另外图片里可能有其他格式的图片,哪位给一个调用前5张,的代码,另外还要先把dede替换为de1de。大家帮帮忙,完了就结贴。
sctongyi 2011-02-22
  • 打赏
  • 举报
回复
似乎放到dedecms里还是不行,哪位朋友有dede的可以试下 放到他的模板下面看看能否运行,先谢谢楼上几位了
sctongyi 2011-02-22
  • 打赏
  • 举报
回复
好像还是因为dede 这个要怎么解决啊
prototyper 2011-02-22
  • 打赏
  • 举报
回复

<script>
var Str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";

String.prototype.getImage = function(num) {
var i = 0, str = "", num = num || 10000000000000,
reg = /([\w*\/]{1,}[^'"]+)['"][^\/]*?([\w*\/]{1,}[^\/]+)\s\{/g;
this.replace(/(\{dede:)/gi, "{de1de:").replace(reg, function($1,$2,$3) {
i ++ < num && (str += '<a href="' + $3 + '" target="_blank"><img src="' + $2 + '"/></a>');
})
return str
}

alert(Str.getImage(1)); // 调用前1张
alert(Str.getImage(5)); // 调用前5张
alert(Str.getImage(8)); // 调用前8张
alert(Str.getImage()); // 调用全部图
</script>


BTW:“dede”是dedecms的关键保留词?给你替换了,是否管用不得而知,这与正则本身没有任何关系。
Linares 2011-02-22
  • 打赏
  • 举报
回复
前5张。。。一个很基本for循环计数。。。
var str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";
var reg = /\{dede:img ddimg='([^']*)'[^}]*\}\s*([^{\s]*)\s*\{\/dede:img\}/gi;
var txt = "";
for (var i=0; i<5 && reg.test(str); i++)
{
txt += '<a href="'+RegExp.$2+'" target="_blank"><img src="'+RegExp.$1+'" /></a>';
}
alert(txt)
prototyper 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sctongyi 的回复:]

Character postion 752, 'img' Error!出来的是这个是什么意思
[/Quote]
是说你代码的第752个位置的字符 'img'错误,与正则表达式无关,因为匹配模式里面唯一的标识符只用了“jpg”,使用firebug调试定下位就知道怎么回事了。或许是因为前面帖子的字符串显示出来出现了断点。
还是封装下变量的好:


<script>
var Str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";

String.prototype.getImage = function(num) {
var i = 0, str = "", num = num || 10000000000000;
this.replace(/([\w*\/]{1,}[^\/]+jpg)[\S\s]*?([\w*\/]{1,}[^\/]+jpg)/gi, function($1,$2,$3) {
i ++ < num && (str += '<a href="' + $3 + '" target="_blank"><img src="' + $2 + '"/></a>');
})
return str
}
alert(Str.getImage())
</script>
prototyper 2011-02-21
  • 打赏
  • 举报
回复
只显示前5幅:


<script>
var Str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";


var i = 0, str = "";
Str.replace(/([\w*\/]{1,}[^\/]+jpg)[\S\s]*?([\w*\/]{1,}[^\/]+jpg)/gi, function($1,$2,$3) {
i ++ < 5 && (str += '<a href="' + $3 + '" target="_blank"><img src="' + $2 + '"/></a>');
});
alert(str)
</script>
sctongyi 2011-02-21
  • 打赏
  • 举报
回复
Character postion 752, 'img' Error!出来的是这个是什么意思
prototyper 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sctongyi 的回复:]

郁闷放到dedecms的模板里 居然不能运行,我就是想用dedecms的sql标签把图集里的图片读取出来,太麻烦了
[/Quote]

哦,你试试下面单独匹配图片地址的看看,不一定行。


<script>
var Str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg'

text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44'

width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";


var str = "";
Str.replace(/([\w*\/]{1,}[^\/]+jpg)[\S\s]*?([\w*\/]{1,}[^\/]+jpg)/gi, function($1,$2,$3) {
str += '<a href="' + $3 + '" target="_blank"><img src="' + $2 + '"/></a>';
});
alert(str)
</script>
sctongyi 2011-02-21
  • 打赏
  • 举报
回复
郁闷放到dedecms的模板里 居然不能运行,我就是想用dedecms的sql标签把图集里的图片读取出来,太麻烦了
sctongyi 2011-02-21
  • 打赏
  • 举报
回复
对了 现在我如果里面是有10副图 但我只想显示前面的5副应该怎么写的
sctongyi 2011-02-21
  • 打赏
  • 举报
回复
谢谢这位朋友,好像是可以,不过你发了几个那个更好些 更容易理解呢 可以注释下吗 本人比较菜
Linares 2011-02-21
  • 打赏
  • 举报
回复
// or --> while / test
var str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";
var reg = /\{dede:img ddimg='([^']*)'[^}]*\}\s*([^{\s]*)\s*\{\/dede:img\}/gi;
var txt = "";
while(reg.test(str)){txt += '<a href="'+RegExp.$2+'" target="_blank"><img src="'+RegExp.$1+'" /></a>';}
prompt('',txt)
Linares 2011-02-21
  • 打赏
  • 举报
回复
var str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";
str = str.replace(/\{dede:(?!img)[^}]*}/gi, '');
str = str.replace(/\{dede:img ddimg='([^']*)'[^}]*\}\s*([^{\s]*)\s*\{\/dede:img\}/gi, '<a href="$2" target="_blank"><img src="$1" /></a>');
prompt('',str);
Linares 2011-02-21
  • 打赏
  • 举报
回复
[code=JScriptt]var str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";
str = str.replace(/\{dede:(?!img)[^}]*}/gi, '');
str = str.replace(/\{dede:img ddimg='([^']*)'[^}]*\}\s*([^{\s]*)\s*\{\/dede:img\}/gi, '<a href="$2" target="_blank"><img src="$1" /></a>');
prompt('',str);
[/code]
课程目标:学习Java语言中字符串相关的知识、字符编码常识和正则表达式的使用,并完成案例前导课程:《Java工程师必学系列课程》前4部课程内容:本课程是《Java工程师必学系列课程》的第5部分,主要讲解Java语言中字符串相关知识、字符编码常识和正则表达式的使用。本课程涉及的主要内容可以分为四部分:一、String、StringBuffer和StringBuilder类基本常识、基本原理和使用技巧二、字符编码常识三、Java语言正则表达式的详细语法和使用技巧四、实战案例课程说明:在开发Java程序的过程中,最常用的类莫过于字符串相关的类。可以毫不夸张的说,任何一个Java程序,都离不开对字符串保存和处理。很多学员对字符串的理解只是处于比较粗浅的阶段。殊不知,如果对字符串处理的不好,会影响到软件的运行效率。本课程专门讲解字符串相关的知识,将从字符串的存储方式、底层的运行方式等各方面深入讲解其中的原理和技巧。此外,对字符串进行更高级的处理,又要用到正则表达式的相关知识。正则表达式广泛应用于各种与字符串处理相关的场合。它是一套独立的语言系统,经过几十年的完善和发展,现在已经非常的强大,并且形成了国际标准。各种高级编程语言,都实现了自己的表达式引擎。本课程详细的讲解了Java语言中正则表达式的语法和使用技巧。掌握了正则表达式,对编程水平的提高有非常大的帮助!同时,本课程在最后一部分,安排了非常精彩的、完整的实战案例,通过实战的形式切实帮助学员提高解决具体问题的能力!预期效果:认真学习完本课程,学员可以掌握字符串处理及正则表达式相关的系统知识,并能提高实际的编码水平。环境配置要求:学习本课程需安装JDK1.8或更高版本的JDK,以便程序能正确运行,建议使用IntelliJ IDEA 2019.1.2或更高版本的开发工具。    因有合作协议约束,《穆哥学堂》只提供PDF版本的课件!

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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