我要根据ID匹配出下面二个DIV里面的全部内容,请问各位用正则怎么写呀。。 <div class="sbox_3" id="EFF_PINFO_Con_2" style="display: none;"><P>电池 x1 电源适配器 x1 说明书 x1</P><div class="State"><strong>声明:</strong>因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!</div></div>
string id = Console.ReadLine();
string pattern = @"(?si)(?<=<div[^<>]+id=""" + id.Trim() + @"""[^<>]*>((?!<div).)*<div[^<>]*>)((?!</div>).)*";
“/”应用程序中的服务器错误。
正在分析“(?si)(?<=<div[^<>]+id="EFF_PINFO_Con_2"[^<>]*& gt;((?!<div).)*<div[^<>]*>)((?!</div>).)*")”- ) 过多。
<strong>声明: </strong>因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
还是
<P>电池 x1 电源适配器 x1 说明书 x1 </P> <div class="State"> <strong>声明: </strong>因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
后面有没有</div>
你看看最后的括号是不是多了一个 ((?! </div>).)*")
(?si)(? <= <div[^ <>]+id="EFF_PINFO_Con_2"[^ <>]*& gt;((?! <div).)* <div[^ <>]*>)
这样也不行呀!! 是不是哪里不太对呀,麻烦再帮忙看下拉!!!
string id = "EFF_PINFO_Con_2";
string pattern = @"(?si)(?<=<div[^<>]+id=""" + id.Trim() + @"""[^<>]*>((?!<div).)*<div[^<>]*>)((?!</div>).)*";
Match m = Regex.Match(input, pattern);
Console.WriteLine(m.Value);结果 <strong>声明: </strong>因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
<strong>声明: </strong>因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解! 少了第一个DIV的内容 :<P>电池 x1 电源适配器 x1 说明书 x1 </P> 就是这一段话..
string id = "EFF_PINFO_Con_2";
string pattern = @"(?sin)(?<=<div[^<>]+id=""" + id + @"""[^<>]*>)(?<t1>((?!<div).)*)<div[^<>]*>(?<t2>((?!</div>).)*)";
Match m = Regex.Match(input, pattern);
Console.WriteLine(m.Groups["t1"].Value + m.Groups["t2"].Value);//得自己拼接