帮忙看看这个正则表达式有什么问题!
正则表达式为:\((?:(?<l>\()?[^()]*(?<r-l>\))?)+\)
如果能简单说明一下这个表达式的和死掉的原因就最好了
本人对正则表达式一知半解,呵呵,这个表达式高人帮忙写的,今天遇到匹配这个字符串就死掉了.
当匹配以下内容时就会出现假死现象(死掉不动了)
select AS_Ware.WareName
,max(RZ_ProductOrder.ProductOrderid) as ProductOrderid
into #abc
from RZ_ProductOrder left join as_ware on AS_Ware.WareID = RZ_ProductOrder.ProductWareID
where RZ_ProductOrder.FunctionID=173
group by AS_Ware.WareName
select * into #123 from
(
select
AS_Ware.WareName
,RZ_ProductOrder.ProductOrderid
,reverse(substring(reverse(rtrim(AS_Ware.WareName)),2,case when patindex('%(%',reverse(rtrim(AS_Ware.WareName)))>0 then
patindex('%(%',reverse(rtrim(AS_Ware.WareName)))-2 else 0 end)) as 纸板代号
,reverse(right(reverse(rtrim(AS_Ware.WareName)),len(rtrim(AS_Ware.WareName))-patindex('%(%',reverse(rtrim(AS_Ware.WareName)))))
as 名称
,AS_Ware.WareCode as 产品编号
,RZ_ProductOrder.ProductOrderFree10 as 材料名称
,cast(left(RZ_ProductOrder.ProductOrderFree11,patindex('%X%',RZ_ProductOrder.ProductOrderFree11)-1) as decimal(18,1)) as 规格1
,cast(right(RZ_ProductOrder.ProductOrderFree11,len(RZ_ProductOrder.ProductOrderFree11)-patindex('%X%',RZ_ProductOrder.ProductOrderFree11)) as decimal(18,1)) as 规格2
,cast(case when RZ_ProductOrder.ProductOrderFree10 like '%牛%' then 0 else substring(RZ_ProductOrder.ProductOrderFree10,1,3) end as decimal(18,0)) as 规格3
,RZ_ProductOrder.ProductOrderFree6 as 白板纸规格
,RZ_ProductOrder.ProductOrderFree44 as 印刷面积
,RZ_ProductOrder.ProductOrderFree50 as 成品面积
,case when RZ_ProductOrder.ProductOrderFree27='是' then '过油' else '无' end as 彩纸表面处理
,'啤箱:'+cast(RZ_ProductOrder.ProductOrderFree65 as varchar(50)) as 成型工序类型
,'裱纸:'+cast(RZ_ProductOrder.ProductOrderFree34 as varchar(50)) as 裱纸工序类型
,'钉箱:'+cast(RZ_ProductOrder.ProductOrderFree66 as varchar(50)) as 钉箱类型
--,RZ_ProductOrder.ProductOrderFree15
from RZ_ProductOrder left join as_ware on AS_Ware.WareID = RZ_ProductOrder.ProductWareID
where RZ_ProductOrder.FunctionID=173 --and RZ_ProductOrder.ProductOrderFree10 is not null
union all
select AS_Ware.WareName
,RZ_ProductOrder.ProductOrderid
,reverse(substring(reverse(rtrim(AS_Ware.WareName)),2,case when patindex('%(%',reverse(rtrim(AS_Ware.WareName)))>0 then
patindex('%(%',reverse(rtrim(AS_Ware.WareName)))-2 else 0 end)) as 纸板代号
,reverse(right(reverse(rtrim(AS_Ware.WareName)),len(rtrim(AS_Ware.WareName))-patindex('%(%',reverse(rtrim(AS_Ware.WareName)))))
as 名称
,AS_Ware.WareCode as 产品编号
,RZ_ProductOrderlist.ProductOrderListMemo as 材料名称
,cast(left(RZ_ProductOrder.ProductOrderFree11,patindex('%X%',RZ_ProductOrder.ProductOrderFree11)-1) as decimal(18,1)) as 规格1
,cast(right(RZ_ProductOrder.ProductOrderFree11,len(RZ_ProductOrder.ProductOrderFree11)-patindex('%X%',RZ_ProductOrder.ProductOrderFree11)) as decimal(18,1)) as 规格2
,cast(RZ_ProductOrderlist.StandardNumber as decimal(18,0)) as 规格3
,RZ_ProductOrder.ProductOrderFree6 as 白板纸规格
,RZ_ProductOrder.ProductOrderFree44 as 印刷面积
,RZ_ProductOrder.ProductOrderFree50 as 成品面积
,case when RZ_ProductOrder.ProductOrderFree27='是' then '过油' else '无' end as 彩纸表面处理
,case when RZ_ProductOrderlist.ProductOrderListMemo like '%瓦%' then '撕纸:'+cast(RZ_ProductOrder.ProductOrderFree46 as varchar(50)) else '' end as 成型工序类型
,cast(null as varchar(50)) as 裱纸工序类型
,cast(null as varchar(50)) as 钉箱类型
--,RZ_ProductOrder.ProductOrderFree15
from RZ_ProductOrder left join RZ_ProductOrderlist on
RZ_ProductOrder.ProductOrderid=RZ_ProductOrderlist.ProductOrderid
left join as_ware on AS_Ware.WareID = RZ_ProductOrder.ProductWareID
where RZ_ProductOrder.FunctionID=173 and RZ_ProductOrderlist.ProductOrderListMemo is not null
) as aa
select #123.*,round(#123.规格1*#123.规格1*#123.规格1/10000000,4) as 单耗
into #tempaa
from #123 inner join #abc on #123.warename=#abc.warename and #123.ProductOrderid=#abc.ProductOrderid order by #123.产品编号,#123.规格3 desc
select * from #tempaa
drop table #abc,#123,#tempaa