为了账号安全,请及时绑定邮箱和手机立即绑定

PHP preg_replace 大括号内的模式,但忽略方括号内的“标志”

PHP preg_replace 大括号内的模式,但忽略方括号内的“标志”

PHP
月关宝盒 2023-08-19 14:13:12
给定以下字符串:Tags are inside {{ curvy }} brackets, but may also include {{ [f] flags }} in square brackets我需要只返回“变量” - 在本例中为“曲线”和“标志”,而忽略标志。我有 2 个单独的正则表达式来实现此目的,但我需要原始字符串保持不变,因此我需要找到一种方法来合并到单个正则表达式中,该正则表达式查找变量,但忽略标志。这是我现在拥有的两个正则表达式:获取 {{ var }} 中的变量 -->~\{\{\s+(.*?)\s+\}\}~获取标志 [f] 或 [fdc] -->~/\[.*?\]/~第一个正则表达式有效,但返回带有标志的变量。
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

您可以使用

\{\{(?:\s*\[[^][{}]*])?\s*(.*?)\s*\}\}

请参阅正则表达式演示

细节

  • \{\{-{{子串

  • (?:\s*\[[^][{}]*])?- 可选的非捕获组,匹配 0+ 个空格、 、 、、[之外的任何 0 个或多个字符,然后[]{}]

  • \s*- 0+ 空格

  • (.*?) - 第 1 组捕获除换行符之外的任何零个或多个字符,尽可能少

  • \s*- 0+ 空格

  • \}\}-}}子串


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信