首页 > Java, JavaScript, PHP > 正则零宽断言之双单标签混合解析

正则零宽断言之双单标签混合解析

2010年1月8日 eays 发表评论 阅读评论

断言用来声明一个应该为真的事实。正则表达式中只有当断言为真时才会继续进行匹配。

正则表达式内容:
\{Tag:([a-zA-z0-9]*)\s([^}\/]*)\}(((?!\{\/Tag:)[\s\S])*?)\{/Tag:([a-zA-z0-9]*)\}

匹配字符串1:
{Tag:test param=”1″}test{/Tag:test}

和字符串2:
{Tag:test param=”1″}{Tag:test2 param=”2″/}{/Tag:test}

匹配字符串1非常简单,字符串2相对困难些,思考了一下午,看来只有零宽断言能解决,一时没体会到零宽断言的意思。

正则零宽断言部份:(((?!\{\/Tag:)[\s\S])*?)

中文说明::(((?!排除的字符)匹配所有表达式)无限次但尽可能少重复)

?!    是 负向零宽先行断言标志,(((?!\{\/Tag:)[\s\S])*?) 的意思是 断言匹配内容为{/Tag:外的所有内容,后跟\s\S括号*表示当断言为真时匹配所有内容。

分类: Java, JavaScript, PHP 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.