正则表达式以匹配非单行并跨多行扩展的结果



我想将/<?phps([sS]*?)?>/gi更改为排除单行PHP标记的方式。

例如,这里我只想匹配第二个PHP标签,而不是第一个:

Test number <?PHP echo($a);?> is here.
This is test number <?PHP echo($b);
$b = $a?> that expanded across multiple lines.

您可以使用

<?php(?!S)((?:(?!<?php(?!S)|?>).)*R[sS]*?)?>

多线.:的一种变体

<?phps((?:(?!<?phps|?>).)*R(?s:.*?))?>

请参阅regex演示详细信息

  • <?php-一个<?php子串
  • (?!S)-右边的空白边界(右边必须有空白或字符串开头(
  • ((?:(?!<?php(?!S)|?>).)*R[sS]*?)-第1组:
    • (?:(?!<?php(?!S)|?>).)*-除了换行符字符之外的任何一个字符,零次或更多次,并且尽可能多地出现,都不会启动<?php + a right-hand whitespace boundary or>`char序列
    • R—断线序列
    • [sS]*?/(?s:.*?)-任何零个或多个尽可能少的字符
  • ?>-一个?>子串

相关内容

  • 没有找到相关文章

最新更新