如何用正则表达式匹配这样的字符串
<%
sData="开头<!-- Begin --><!-- Begin --><!-- /End --><!-- Begin -->This is a content from X to Y.<!-- /End -->"
response.write "<div>"&Server.Htmlencode(sData)&"</div>"
Dim objRegExp,MyPattern,MatCount
Dim NewString
Set objRegExp=New RegExp'创建对象
objRegExp.IgnoreCase=True'是否忽略大小写 True False
objRegExp.Global=True'字符串中全局匹配 True False
objRegExp.MultiLine = False'是否多行 True False
MyPattern="<!-- Begin -->([^(Begin)]*)<!-- /End -->"
objRegExp.Pattern=MyPattern'正则表达式模式
Set MyMatches=objRegExp.Execute(sData)
MatCount=MyMatches.Count
response.write "<div>匹配到个数=["&MatCount&"]</div>"
For Each MyMatch In MyMatches
response.write "<div>项目["&Server.Htmlencode(MyMatch)&"]</div>"
Next
response.write "<hr/>"
sData=objRegExp.Replace(sData,"【被替换了】")
response.write "<div>"&Server.Htmlencode(sData)&"</div>"
%>
我想匹配<!-- Begin -->到<!-- /End -->之间的内容(内容不允许包含<!-- Begin-->)。 看原字符串,照理说是可以匹配出2个结果。
但是正则表达式中因为多了个^begin 所以后面那个匹配不到,被过滤了。
我的意图是想 过滤 含有(begin) 整个单词的字符串,而不是单个单词b,e,g,i,n
请问怎么改写正则表达式:
MyPattern="<!-- Begin -->([^(Begin)]*)<!-- /End -->"
用()括号括起来了,还是没用。奇怪。要怎么写?
[解决办法]
MyPattern="(\<\!\-\- Begin \-\-\>)(.*?)(<!-- /End -->)"
sData=objRegExp.Replace(sData,"$1[被替换了]$3")
直接这样不就好了么?
[解决办法]
sData="开头<!-- Begin --><!-- Begin --><!-- /End --><!-- Begin -->This is a content from X to Y.<!-- /End -->"
response.write "<div>"&Server.Htmlencode(sData)&"</div>"
Dim objRegExp,MyPattern,MatCount
Dim NewString
Set objRegExp=New RegExp '创建对象
objRegExp.IgnoreCase=True '是否忽略大小写 True False
objRegExp.Global=True '字符串中全局匹配 True False
objRegExp.MultiLine = False '是否多行 True False
MyPattern="<!-- Begin -->((?:(?!<!-- Begin -->)[\d\D])*)<!-- /End -->"
objRegExp.Pattern=MyPattern '正则表达式模式
Set MyMatches=objRegExp.Execute(sData)
MatCount=MyMatches.Count
response.write "<div>匹配到个数=["&MatCount&"]</div>"
For Each MyMatch In MyMatches
response.write "<div>项目["&Server.Htmlencode(MyMatch)&"]</div>"
Next
response.write "<hr/>"
sData=objRegExp.Replace(sData,"【被替换了】")
response.write "<div>"&Server.Htmlencode(sData)&"</div>"