php中提取%3cdiv,請教一個正則表達式的問題如何匹配

#13

對於支持遞歸的正則表達式引擎來說,這個表達式很容易寫,比如 Perl 和 PHP 中。

Perl:

$re = qr/

]*>([^/;

PHP:

/

]*>([^/

完整的代碼,請參見:

http://www.nk975.com/sswater/myref/index.asp?id=18

我查了一下 msdn ,沒有找到 .NET 的正則表達式支持遞歸(只是沒有找到,也許有),因此只能采用更笨的辦法來支持有限次嵌套。

第一步:寫一個不支持嵌套的

]*>([^))*

測試工具:

http://www.regexlab.com/zh/workshop.asp?pat=%3Cdiv%5B%5E%3E%5D*%3E%28%5B%5E%3C%5D%7C%3C%28%3F%21/%3Fdiv%3E%29%29*%3C/div%3E&txt=%3Cdiv%3Ea%3Cdiv%3Eb%3C/div%3Ec%3C/div%3E&dlt=0

第二步:能嵌套n層的與嵌套n-1層的關系

]*>([^)|  xxxxx  )*

因此得到能嵌套1層的

]*>([^)|
]*>([^))*
)*

測試工具:

http://www.regexlab.com/zh/workshop.asp?pat=%3Cdiv%5B%5E%3E%5D*%3E%28%5B%5E%3C%5D%7C%3C%28%3F%21/%3Fdiv%3E%29%7C%3Cdiv%5B%5E%3E%5D*%3E%28%5B%5E%3C%5D%7C%3C%28%3F%21/%3Fdiv%3E%29%29*%3C/div%3E%29*%3C/div%3E&txt=%3Cdiv%3Ea%3Cdiv%3Eb%3Cdiv%3Ec%3C/div%3Ed%3C/div%3Ee%3C/div%3E&dlt=0

第三步:寫一個能嵌套2層的

]*>([^)|
]*>([^)|
]*>([^))*
)*
)*

測試工具:

http://www.regexlab.com/zh/workshop.asp?pat=%3Cdiv%5B%5E%3E%5D*%3E%28%5B%5E%3C%5D%7C%3C%28%3F%21/%3Fdiv%3E%29%7C%3Cdiv%5B%5E%3E%5D*%3E%28%5B%5E%3C%5D%7C%3C%28%3F%21/%3Fdiv%3E%29%7C%3Cdiv%5B%5E%3E%5D*%3E%28%5B%5E%3C%5D%7C%3C%28%3F%21/%3Fdiv%3E%29%29*%3C/div%3E%29*%3C/div%3E%29*%3C/div%3E&txt=%3Cdiv%3Ea%3Cdiv%3Eb%3Cdiv%3Ec%3Cdiv%3Ed%3C/div%3Ee%3C/div%3Ef%3C/div%3Eg%3C/div%3E&dlt=0

更多幫助,參見正則表達式學習文檔:

http://www.regexlab.com/zh/regref.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值