【问题标题】:Using backreferences for backreferencesing to a pattern使用反向引用对模式进行反向引用
【发布时间】:2012-10-30 17:55:10
【问题描述】:

考虑(\w[0-9]).*\1 RegEx,它匹配d1akdhfafd1R2ddsfasfasfdsfdR2等。

是否也可以编写与以下匹配的正则表达式:D1dfsadfadsfE3z6adfdasfdfr2e3654654e0 ......?

\w[0-9]只是一个例子,请考虑一般形式(::A_Complex_Pattern::).*\1

【问题讨论】:

  • 可能是指递归。 php.net/regexp.reference.recursive - 除此之外提供一个 PHP 示例,其中包含主题字符串、您的模式、实际结果和您正在寻找的结果。你问的问题不是很清楚 - 一个代码示例总是可以立即清楚地说明这一点。

标签: php regex pcre backreference


【解决方案1】:

PHP 的正则表达式引擎 (PCRE) 支持 recursion。其他一些人这样做,但你通常不应该指望它。但是,如果引擎这样做,那么您可以像这样插入其他地方使用的模式:

(\w\d).*(?1)

这里的编号与反向引用的编号相同。 (?R) 将插入整个模式。

【讨论】:

  • @Reza 实际上我错了。我用您的问题的解决方案更新了答案。
  • 除了PCRE和相关语言,还有其他语言支持递归吗?有什么方法可以模拟这个以在 JS 中使用?
  • @Reza 根据维基百科only Boost does
猜你喜欢
  • 2014-11-22
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多