zoukankan      html  css  js  c++  java
  • [正则表达式]PCRE反向分组引用(语法)

    正则表达式中,凡出现圆括号(),括号中的匹配内容就会被认为是一个分组;

    根据括号从左边出现的顺序命名分组代号,分组代号由1到n(代号0通常被一些语言用来引用整个表达式匹配的结果,即使这个表达式没有分组括号,但是表达式内不能引用),例如:

    (a(b))

    以上表达式包含两个分组第1个是(a(b)),第2个是(b),很明显第一个分组包含了第二个分组的内容;

    反向引入分组,其实是后面引用分组中匹配的结果,引用分组的语法是+分组代号:

    (.)1

    这个表达式的含义是匹配一个任意字符,接下来再出现一个这样的字符,注意,引用分组,是引用分组匹配的结果,而不是引用分组的表达式规则

    分组可以用量词控制匹配次数,在量词的前面,分组引用依然有效,只不过引用的是多次匹配量词的最后一次匹配的一个结果:

    ([^&])+&1

    如果运用以上表达式来匹配"aaa&aaa",那么结果将会是"aaa&a",其中分组捕获的结果是"a";

    有两点需要注意一下:

    1. 尽管分组后面接量词+号,但是分组引用的也只是分组匹配一次的结果"a"而不是多次的结果"aaa";

    2. 分组引用的是最后一次匹配的结果,也就是&号前面的"a";

  • 相关阅读:
    [算法] 带权图
    哥德巴赫猜想 ——— 极限算法(你要是能写出比我用时还短的代码算我输)
    详解 位运算
    内存对齐模式 —— 原理讲解
    C语言 文件操作
    指针与数组
    队列的实现
    堆栈的实现
    线性表 详讲及使用
    树莓派
  • 原文地址:https://www.cnblogs.com/yiyide266/p/10441721.html
Copyright © 2011-2022 走看看