我希望匹配<?
和?>
中封装的所有文字。我发现使用lookahead做一个相当简单的方法:
<\?([^?]|\?(?!>))*\?>
不幸的是,我正在编写正则表达式的工具不支持lookahead。有办法解决这个问题吗?
答案 0 :(得分:1)
对于您的具体情况,您可以简单地重复:
<\?(.*?)\?>
这只会持续到第一个?>
。之前的任何单?
都将由.*
覆盖,但当引擎遇到第一个?>
时,它将停止。
请注意(除非您使用DOTALL
修饰符),这对于跨越多行的部分不起作用。如果你不能使用修饰符,这将(平台独立):
<\?((.|[\r\n])*?)\?>