php - 使用正则表达式解析方括号

标签 php regex debugging

我在使用正则表达式时总是遇到困难。我已经为此寻求帮助,但我无法完全找到我要找的东西。

我有遵循这种模式的文本 block :

[php] ...这里有任何类型的代码示例 [/php]

我需要:

  • 检查方括号,它可以包含任意数量的 20-30 种编程语言名称(phpruby 等)。
  • 需要抓取左括号和右括号之间的所有代码。

我已经计算出以下正则表达式:

#\[([a-z]+)\]([^\[/]*)\[/([a-z]+)\]#i

这与一切都很相配。但是,当代码示例包含方括号时,它会中断。我该如何修改它,以便匹配那些左/右大括号之间的任何字符供以后使用?

最佳答案

这是您想要的正则表达式。它也匹配标签所在的位置,因此 php 标签只会结束 php 标签。

/\[(\w+)\](.*?)\[\/\1\]/s

或者,如果您想显式匹配可以使用的标签...

$langs = array('php', 'python', ...); 

$langs = implode('|', array_map('preg_quote', $langs));

preg_match_all('/\[(' . $langs . ')\](.*?)\[\/\1\]/s', $str, $matches);

关于php - 使用正则表达式解析方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6196427/

相关文章:

php - 使用 JSON 对象中的值批量更新数据库表

php - html 表单预设值字段

javascript - 在 javascript 中使用 php 行?

正则表达式匹配不带 www 的域名并保持 website.com 完好无损

android - 从模拟器或连接的设备调试本地 API

c - 使用 GDB 在 "?? ()"中出现内存故障

php - C++ 输出未在 PHP 中显示

javascript - 使用字符串变量即时创建正则表达式

javascript正则表达式捕获括号

Eclipse 中带条件的 Java 异常断点