【问题标题】:Matching parenthesis content in PCRE without outermost parens在没有最外层括号的情况下匹配 PCRE 中的括号内容
【发布时间】:2009-08-06 16:11:28
【问题描述】:

我需要提取不平衡括号构造的内容。在 PCRE 手册中,我找到了匹配平衡括号的解决方案。

<\[ ( (?>[^(<\[|\]>)]+) | (?R) )* \]>

为了我的测试

<[<[ab<[cd]>]><[ef]>

它提取

0.0: <[ab<[cd]>]>
0.1: <[ef]>

但我想在没有最外层括号的情况下提取相同的内容:

0.0: ab<[cd]>
0.1: ef

谁能指出解决方案?

【问题讨论】:

  • 请发布您想要提取的样本。

标签: regex pcre


【解决方案1】:

嗯,从您的正则表达式的外观来看,最外层外壳内的内容(在该术语的任何正常用法中它们不是括号)已经被捕获在括号组中。我不知道您在什么上下文中使用 PCRE 库,但您想要的提取应该出现在“匹配 #1”中(其中整个模式匹配是匹配 #0)。即您的数据应该已经如下所示:

0.0: <[ab<[cd]>]>
0.1: <[ef]>
1.0: ab<[cd]>
1.1: ef

【讨论】:

  • 目标系统是 PHP 5.2。对于这个正则表达式,我收到 0.0: (]>) 0.1: () 1.0: () 1.1: (ef)
猜你喜欢
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多