正则表达式模式说明

标签 regex perl

我对正则表达式相当陌生,最近我在 perl 脚本中偶然发现了一个我无法弄清楚的正则表达式:

$groups= qr/\(([^()]+|(??{$groups}))*\)/;

任何帮助,将不胜感激!

最佳答案

好吧,如果你扩展它:

$groups= qr/
  \(                 # match an open paren (
    (                # followed by
      [^()]+         # one or more non-paren character
    |                # OR
      (??{$groups})  # the regex itself
    )*               # repeated zero or more times
  \)                 # followed by a close paren )
/x;

你得到了一种优雅的递归方法来找到平衡的括号:)

关于正则表达式模式说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453763/

相关文章:

jquery - 如何提取 url 的一部分并填充到 img 的 src 中

python - 如何在 Python 3.3 中将一些字符转换为五位 unicode 1?

perl - 如果 key 不存在,Perl 中的哈希会添加 key

mysql - 在 MySQL 中记录查询错误

regex - Perl regexp - 检索要列出的所有匹配项并将其从文本中删除

regex - 如何使用 Groovy 的 replaceFirst 和闭包?

python - 提取具有多个分隔符的文本

javascript - jQuery - JavaScript 正则表达式仅允许数字和减号作为第一个字符

perl - 是否有将 c99 十六进制浮点符号转换为常规符号的 Perl 模块?

arrays - 从 perl 模块文件访问全局数组