在不支持的情况下模仿前瞻

时间:2012-10-18 14:39:16

标签: regex

我希望匹配<??>中封装的所有文字。我发现使用lookahead做一个相当简单的方法:

<\?([^?]|\?(?!>))*\?>

不幸的是,我正在编写正则表达式的工具不支持lookahead。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

对于您的具体情况,您可以简单地重复:

<\?(.*?)\?>

这只会持续到第一个?>。之前的任何单?都将由.*覆盖,但当引擎遇到第一个?>时,它将停止。

请注意(除非您使用DOTALL修饰符),这对于跨越多行的部分不起作用。如果你不能使用修饰符,这将(平台独立):

<\?((.|[\r\n])*?)\?>