(?<={% start %}).*?(?={% end %})
2 つのカスタム タグ間のすべてに一致する正規表現があります。
問題は、タグ内にスペースがあり (例: "{% start %}")、\s+?
条件を追加すると、正規表現が失敗することです。次のコードは機能しません: (?<={%\s+?start\s+?%}).*?(?={%\s+?end\s+?%})
PHP でエラーが発生します:
preg_match_all(): Compilation failed: lookbehind assertion is not fixed length at offset 25
lookahead/lookbehind: を削除すると、同じ正規表現が機能します({%\s+?(start|end)\s+%})
。
お知らせ下さい。