正则表达式匹配问题

正则为:{(cms:\w+)([\s](.*)+)?(}([^{]+)?{(/\1)}|/})当要匹配的内容为<metacontent="{cms:configFiled... 正则为:{(cms:\w+)([\s](.*)+)?(}([^{]+)?{(/\1)}|/})
当要匹配的内容为
<meta content="{cms:config Filed=Meta_Description/}" name="1234567">

正常匹配出

{cms:config Filed=Meta_Description/}

但是当内容<meta content="{cms:config Filed=Meta_Description/}" name="1234567">
多一位的情况下 就匹配不出来了
如<meta content="{cms:config Filed=Meta_Description/}" name="12345678">
通过JS 的话 匹配不出来

但是在C#里 能匹配出来 但是速度非常慢。如果少一位的话 在C#里就很快匹配出来了
展开
 我来答
Zjmainstay
2012-10-11 · 知道合伙人互联网行家
Zjmainstay
知道合伙人互联网行家
采纳数:580 获赞数:1129
http://www.zjmainstay.cn

向TA提问 私信TA
展开全部
写那么复杂表示“看不懂”,pattern换下这个:var p = /{cms[^}]*?}/

你的正则意思是不是有{cms:config 省略很多字}MyCms{/cms}的情况?
追问
这个正则不光是匹配这个模式 有可能是 {cms:XXX}XXX{cms:XXX} 这样
追答
这么复杂正则就不直接写在回答里面了,看评论吧,省得一会又被吞答案。
seesea2517
2012-10-11 · TA获得超过1480个赞
知道小有建树答主
回答量:512
采纳率:100%
帮助的人:554万
展开全部
写这么复杂,是有特殊的要求吗?
追问
只是取出{cms:xxx}xxx{/cms:xxx}  {cms:xxx sss=xxx yyyy=ddd}xxx{/cms:xxx}
和{cms:sxxx sss=fff/} 这样
追答
试试这个吧,感觉写的很恶心:

var str = "{cms:xxx}xxx{/cms:xxx} {cms:xxx sss=xxx yyyy=ddd}xxx{/cms:xxx} 和{cms:sxxx sss=fff/}";
alert(str.match(/{(cms:[^ }]+)[^}]*}[^{]*({\/\1})*/g));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式