You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建模板引擎:正则匹配带/不带@endsection的@section代码段求助

解决模板引擎@section代码段匹配的正则问题

直接用这个正则表达式就能满足需求:

@section\((?:[^)]+)\)(?:\s*(?!@section)(?:.|\n)*?@endsection)?

正则说明:

  • @section\(:精准匹配@section的起始标识
  • (?:[^)]+):捕获括号内的所有内容(直到右括号为止,不会跨段)
  • \):匹配右括号,结束@section的声明部分
  • (?:\s*(?!@section)(?:.|\n)*?@endsection)?:可选的内容块匹配,(?!@section)确保不会误匹配到下一个@section,非贪婪模式*?保证只抓取当前@section到对应的@endsection之间的内容

测试示例:

原始模板代码:

@section('title','Home page')


@section('content')
    <h1>Home page<h1/>
@endsection

匹配结果:

  1. @section('title','Home page')
  2. `@section('content')
    Home page

@endsection`

这个正则会自动区分两种@section:不带@endsection的会直接匹配到右括号结束(本身就是一行),带@endsection的会完整捕获从声明到闭合标签的所有内容,且不会出现嵌套匹配的问题。

内容的提问来源于stack exchange,提问作者Yahya Mallak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:23:11