|
蓝森林 http://www.lslnet.com 2006年8月25日 8:28
[ASP VBscript]UBB嵌套问题求解——给个思路吧
我的UBB代码:
[code]
.....
re="(\[b\])(.+?)(\[\/b\])"
ubb=checkexp(re,ubb,"<b>$2</b>")
.....
[/code]
可为什么我两次引用就不行了呢?
[ b ] aaa [ b ] bbb [ /b ] [ /b ]
引两次就变成:[b]aaa[b]bbb[/b][/b] 了,高手帮帮忙 :confused: |
[ASP VBscript]UBB嵌套问题求解
汗,经典也有我说的这个问题:
双重嵌套,那双引用怎么处理的呀?
例如下边可以正常显示,是怎么处理的?请求指点
[ quote ]
a在上边说:XXXXXX
[ quote ]
b在上边说:XXXXXX
[ /quote ]
[ /quote ] |
加粗之后再加粗跟一次性加粗有什么差别么?
quote这个用到一个match集合了,遍历就可以解决。
当然你的[b]也一样可以用,只是效果跟一次性加粗没差别,不知道你的想法是什么。 |
我就是想做到引用别人引用的话,而引用的话里也有引用
也就是俩横线里再套俩横线
match?没见过呢,指点下 |
[code]
2、Match 对象
匹配搜索的结果是存放在Match对象中,提供了对正则表达式匹配的只读属性的访问。 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的 Match 对象属性都是只读的。在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象提供了被正则表达式搜索找到的字符串的访问、字符串的长度,以及找到匹配的索引位置等。
○FirstIndex 属性,返回在搜索字符串中匹配的位置。FirstIndex 属性使用从零起算的偏移量,该偏移量是相对于
搜索字符串的起始位置而言的。换言之,字符串中的第一个字符被标识为字符 0
○Length 属性,返回在字符串搜索中找到的匹配的长度。
○Value 属性,返回在一个搜索字符串中找到的匹配的值或文本。
3、Matches 集合
正则表达式 Match 对象的集合。Matches 集合中包含若干独立的 Match 对象,只能使用 RegExp 对象的 Execute 方法来创建之。与独立的 Match 对象属性相同,Matches `集合的一个属性是只读的。在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象都提供了与正则表达式匹配的字符串的访问入口、字符串的长度,以及标识匹配位置的索引
[/code]
虽然找到了,但不理解,能给讲下么? |
quote用到的是match集合,VB中的集合都是可以通过for each...in ...来访问的,因此你要做的是获取这个集合,并且遍历,要不要加上两条hr就看你自己是否要做。
至于其他的,我也不知道说什么,因为我不知道你的理解是什么,需要讲什么-_!! |
帅青蛙在上个帖子中说
就是这个:获取这个集合,并且遍历,不知怎么做啊 :confused: :confused: |
Match集合的获取,就是通过regexp.execute(pattern)来获取,这个execute(pattern)写对了,出现重复,它自然会添加到集合中。
遍历就是循环了,for each循环会用就知道怎么读取了。 |
[code]
<%
function ubb(text)
ubb=text
//字体加粗
re="(\[b\])(.+?)(\[\/b\])"
ubb=checkexp(re,ubb,"<b>$2</b>")
end function
Function CheckExp(patrn,strng,tagstr)
Dim regEx,Match,Matches
Set regEx=New RegExp
regEx.Pattern=patrn
regEx.IgnoreCase=true
regEx.Global=True
Matches=regEx.replace(strng,tagstr)
--------------------------------------------------------------
aaa=regexp.execute(pattern)
For Each Match in Matches
.....
next
--------------------------------------------------------------
CheckExp=Matches
end function
response.write ubb("[b]aaa[b]bbb[/b][/b]")
[/code]
线内的地方实在不知该怎么做呀? |
我大力支持一次性加粗,真不知加粗再加粗有什么呢?或许你别的会用到这个,但你上面的例子一次性加粗不是更好,,汗
|
请想想本版的规则,不讨论代码修改,谢谢。 |
呵呵,双重加粗当然没有意义,不过很多用户有意无意会这么做,而且不解决这个问题,其他UBB标签比如COLOR,QUOTE也会出错
贪婪匹配呢? |
[html]<script language=vbs>
str = "[b] aaa [b] bbb [/b] [/b]"
dim re
Set re=new RegExp
re.IgnoreCase =true
re.Global=True
re.Pattern="\[b\](.*?)\[\/b\]"
do while re.test(str)
str = re.replace(str, "<b>$1</b>")
loop
msgbox str
</script>[/html] |
|