如何让正则表达式逐个匹配

yongtang 2008-11-12 02:35:58
我现在有如下原始字符串
[s1]KX-01[/s1][s1]KX-02[/s1]

我想用正则表达式替换成
(product:S1)KX-01 (product:S1)KX-02

我写的正则pattern是
(\[s1\])(\S+)(\[/s1\])

替换$2

可是出现的结果是
(product:S1)KX-01[/s1][s1]KX-02

情况就是,正则表达式之匹配了头和尾,中间的pattern闭合似乎被她忽略了,请问如何让整个字符串都被逐个匹配到?

谢谢!
...全文
248 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yongtang 2008-11-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 neo_yoho 的回复:]
HTML code
str="[s1]KX-01[/s1][s1]KX-02[/s1]"
str1=""
Set regEx = New RegExp
regEx.Pattern = "(\[s1\])?(\S+)(\[\/s1\]\1)"
regEx.IgnoreCase = True
regEx.Global = True
Set Matches = regEx.Execute(str)
For Each Match in Matches
str1=str1&"(product:S1)"&Match.SubMatches(1)
Next
MsgBox str1



我这样是正常的啊
[/Quote]

这样是正常的,是我的错

多学到一种匹配方式!
neo_yoho 2008-11-12
  • 打赏
  • 举报
回复

str="[s1]KX-01[/s1][s1]KX-02[/s1]"
str1=""
Set regEx = New RegExp
regEx.Pattern = "(\[s1\])?(\S+)(\[\/s1\]\1)"
regEx.IgnoreCase = True
regEx.Global = True
Set Matches = regEx.Execute(str)
For Each Match in Matches
str1=str1&"(product:S1)"&Match.SubMatches(1)
Next
MsgBox str1

我这样是正常的啊
newbieeee 2008-11-12
  • 打赏
  • 举报
回复
(\[s1\])(\S+?)(\[/s1\])

这样子试下?
yongtang 2008-11-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 neo_yoho 的回复:]
表达式换成
(\[s1\])?(\S+)(\[\/s1\]\1)
[/Quote]
这样是不对的,匹配出来的字符串是:
[s1]KX-01[/s1][s1]

:(
neo_yoho 2008-11-12
  • 打赏
  • 举报
回复
表达式换成
(\[s1\])?(\S+)(\[\/s1\]\1)
neo_yoho 2008-11-12
  • 打赏
  • 举报
回复
设置表达式对象的Global属性为True试试

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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