zoukankan      html  css  js  c++  java
  • 正则表达式进阶

    捕获组

    捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或手动命名的组里,以供后面引用。

    表达式

    说明

    (Expression)

    普通捕获组,将子表达式Expression匹配的内容保存到以数字编号的组里

    (?<name> Expression)

    命名捕获组,将子表达式Expression匹配的内容保存到以name命名的组里

    普通捕获组(在不产生歧义的情况下,简称捕获组)是以数字进行编号的,编号规则是以“(”从左到右出现的顺序,从1开始进行编号。通常情况下,编号为0的组表示整个表达式匹配的内容。

    命名捕获组可以通过捕获组名,而不是序号对捕获内容进行引用,提供了更便捷的引用方式,不用关注捕获组的序号,也不用担心表达式部分变更会导致引用错误的捕获组。

    非捕获组

    一些表达式中,不得不使用( ),但又不需要保存( )中子表达式匹配的内容,这时可以用非捕获组来抵消使用( )带来的副作用。

    表达式

    说明

    (?:Expression)

    进行子表达式Expression的匹配,并将匹配内容保存到最终的整个表达式的匹配结果中,但Expression匹配的内容不单独保存到一个组内

    反向引用
    捕获组匹配的内容,可以在正则表达式的外部程序中进行引用,也可以在表达式中进行引用,表达式中引用的方式就是反向引用。

     反向引用通常用来查找重复的子串,或是限定某一子串成对出现。

    表达式

    说明

    1,2

    对序号为1和2的捕获组的反向引用

    k<name>

    对命名为name的捕获组的反向引用

    环视

    环视只进行子表达式的匹配,匹配内容不计入最终的匹配结果,是零宽度的。

    环视按照方向划分有顺序和逆序两种,按照是否匹配有肯定和否定两种,组合起来就有四种环视。环视相当于对所在位置加了一个附加条件。

    表达式

    说明

    (?<=Expression)

    逆序肯定环视,表示所在位置左侧能够匹配Expression

    (?<!Expression)

    逆序否定环视,表示所在位置左侧不能匹配Expression

    (?=Expression)

    顺序肯定环视,表示所在位置右侧能够匹配Expression

    (?!Expression)

    顺序否定环视,表示所在位置右侧不能匹配Expression

  • 相关阅读:
    WPF 创建自定义窗体
    Entity Framework Code First for SQL Compact
    WPF QuickStart系列之样式和模板(Style and Template)
    WPF 实现 DataGrid/ListView 分页控件
    WPF ItemsControl ListBox ListView比较
    WPF 实现带标题的TextBox
    WPF ListView展示层叠信息
    上(下)三角矩阵
    正定矩阵(positive definite matrix)
    (非)奇异矩阵
  • 原文地址:https://www.cnblogs.com/family-626-77/p/5891591.html
Copyright © 2011-2022 走看看