PCRE正则表达式:不包含字符串

时间:2010-12-23 12:05:06

标签: php regex

我们在后端用WYSIWYG编辑器开发了一些flash应用程序。我们必须在编辑器中提供更多功能,因此我们决定将自定义标签<开始更多> ......< /结束更多>在我们的WYSIWYG。

所有HTML都经过解析并转换为XML,但唯一的问题是我们需要开始更多/结束更多标签,将它们转换为自定义淡入淡出效果,以便在闪存内的帖子上显示更多内容。

长话短说,这里是XML输出示例。

Some text outside <start more> some text inside</end more>
some other text <start more>1 and some random stuff <start more>2 and 
thing </end more>2 and random stuff </end more>

正则表达式以获得更多开始并结束更多

/(<start more>){1,1}(.+?)(<end more>)/

此表达式首先捕获&lt;开始更多&gt;并且第一个&lt;结束更多&gt;在字符串中。我试图做负面的前瞻断言,只获得内心最多的标签。但没有工作。

希望它有意义。如果我无法解释这个问题,请告诉我。

2 个答案:

答案 0 :(得分:3)

你应该把它放到你说过你已经拥有的解析器中 如果您将<start more></end more>更改为有效对,请说<more> </more>,任何HTML解析器都应该已经正确处理,即使它不是已知标记。

如果你坚持,弱正则表达可能是:

/<start more>(((?!<(?:/end|start) more>).)+)</end more>/

答案 1 :(得分:2)

使用正则表达式正确解析xml / html是not possible。你必须编写一个合适的解析器。