自己写了段正则表达式代码想将软件名称拆为软件名及版本号,代码如下:
<%
Dim s,re
set re = New RegExp
re.IgnoreCase = True
re.Global = True
s = "诺顿系统修复专家2005简体中文绿色版"
re.Pattern = "(^.+)(完美|硬盘|测试|适用|完全|中文|繁体|绿色|正式|Build|标准|简体)(.+$)"
Response.Write re.Replace(s, "$1") & "<br>"
Response.Write re.Replace(s, "$2$3") & "<br>"
Response.Write s
%>
希望得到的结果为:
软件名称:诺顿系统修复专家2005
版本号:简体中文绿色版 得到结果却如下:
软件名称:诺顿系统修复专家2005简体中文
版本号:绿色版 希望有高手赐教!谢谢!
<%
Dim s,re
set re = New RegExp
re.IgnoreCase = True
re.Global = True
s = "诺顿系统修复专家2005简体中文绿色版"
re.Pattern = "(^.+)(完美|硬盘|测试|适用|完全|中文|繁体|绿色|正式|Build|标准|简体)(.+$)"
Response.Write re.Replace(s, "$1") & "<br>"
Response.Write re.Replace(s, "$2$3") & "<br>"
Response.Write s
%>
希望得到的结果为:
软件名称:诺顿系统修复专家2005
版本号:简体中文绿色版 得到结果却如下:
软件名称:诺顿系统修复专家2005简体中文
版本号:绿色版 希望有高手赐教!谢谢!
改为
re.Pattern = "(^.+?)(完美|硬盘|测试|适用|完全|中文|繁体|绿色|正式|Build|标准|简体)(.+$)"
问题解决!
"?" 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。