使用PCRE从Twig模板中分离出前端物质

问题描述 投票:1回答:1

假设我要从Twig模板中拆分元数据

---
some metadata
multiple lines
---
Twig template
More data

我想出了/\A---\R(.+?\R)?---\R(.*)\Z/s,它或多或少地做到了,但我想知道它在回溯中是否会变得病态。

php regex pcre yaml-front-matter
1个回答
0
投票

您的正则表达式似乎运行良好。

如果您像第一个那样“展开”第一个惰性点图案,可能会使其更有效率。

/\A---\R(.*(?:\R(?!---\R).*)*\R)?---\R(?s)(.*)\Z/

请参见regex demo。注意:不需要修饰符,该模式内有一个内联(?s)修饰符。

详细

  • [\A-字符串开头
  • [---\R-包含换行符的完整---
  • (.*(?:\R(?!---\R).*)*\R)?-可选的捕获组1:
    • [.*-整行
    • (?:\R(?!---\R).*)*-0或更多重复
      • [\R(?!---\R)-换行符,后面没有---行,后面有换行符
      • [.*-整行
  • [\R-换行符序列
  • [---\R-包含换行符的完整---
  • [(?s)-内联DOTALL修饰符,使右匹配点的点换行符]
  • [(.*)组2:尽可能多的0+个字符
  • [\Z-字符串结尾。
  • © www.soinside.com 2019 - 2024. All rights reserved.