#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層的關系
因此得到能嵌套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