主题:  一个关于正则表达式的问题

绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
#12002/7/30 12:11:24
我定义了引用回复
re.Pattern="(\[QUOTE\])(.[^\]]*)(\[\/QUOTE\])"
strContent=re.Replace(strContent,"
引用:
$2
")

当只有一个引用时,表达式正常显示,但当有嵌套时,如
aaa在上个贴子中说
[QUOTE]aaa在上个贴子中说
[QUOTE]aaa在上个贴子中说
[QUOTE]测试
继续测试[/QUOTE]
大家一起来[/QUOTE]
再次引用[/QUOTE]
只显示最里面的那个,而外面的几个则还是写了出来,没能进行替换,怎么回事?
显示结果如下:
aaa在上个贴子中说
[QUOTE]aaa在上个贴子中说
[QUOTE]aaa在上个贴子中说
引用:
测试
继续测试

大家一起来[/QUOTE]
再次引用[/QUOTE]


编辑历史:[这消息被germchen编辑过(编辑时间2002-07-30 12:12:20)]
[这消息被germchen编辑过(编辑时间2002-07-30 12:13:30)]
[这消息被germchen编辑过(编辑时间2002-07-30 12:32:38)]


helmet

职务:版主
等级:4
金币:10.0
发贴:1559
#22002/7/31 0:55:07
匹配本来就是一次,不过你可以这样:

re.Pattern="(\[QUOTE\])(.[^\]]*)(\[\/QUOTE\])"
str="
引用:
$2
"

Set Matches=regEx.Execute(str) '执行搜索。
for each Match in matches
x = regEx.Replace(str, replStr)
x = regEx.Replace(x, replStr)
next

来个循环,彻底替换。



helmet

职务:版主
等级:4
金币:10.0
发贴:1559
#32002/7/31 0:58:25
你可以试试下面这两个例子:
(1)全部替换:



helmet

职务:版主
等级:4
金币:10.0
发贴:1559
#42002/7/31 0:59:36
(2)只匹配一次:

编辑历史:[这消息被deathcult编辑过(编辑时间2002-07-31 01:00:28)]


绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
#52002/7/31 8:43:58
谢谢谢谢,问题已经解决,呵呵



绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
#62002/7/31 8:45:06
这是修改后的代码
re.Pattern="(\[QUOTE\])(.[^\]]*)(\[\/QUOTE\])"
replstr="
引用:
$2
"
Set Matches=re.Execute(strContent) '执行搜索
for each Match in matches
strcontent = re.Replace(strContent, replStr)
strcontent = re.Replace(strcontent, replStr)
next