• c#正则表达式--环视


    网上有一篇文章写的很好。请参见      正则表达式之环视 。现将自己的理解记录下来。

    环视(lookaround)可以理解为限定条件。即字符串中,某个字符左边或右边能出现什么,不能出现什么。只是一个限定。从英文lookaround字面理解,因为英文是二维的,可以理解为看看左边和右边的情况。再匹配。

    1、正则中开启环视  

    用小括号,?来开启一个环视。

    表达式 说明
    (?<=Expression) 逆序肯定环视,表示所在位置左侧能够匹配Expression
    (?<!Expression) 逆序否定环视,表示所在位置左侧不能匹配Expression
    (?=Expression) 顺序肯定环视,表示所在位置右侧能够匹配Expression
    (?!Expression) 顺序否定环视,表示所在位置右侧不能匹配Expression

    2、代码理解

    例子1:字符右边限定 (顺序环视)

               #region 环视 匹配除<p>或</p>之外的其余标签。
                string str = "aa<p>one</p>bb<div>two</div>cc";
                //开启一个顺序否定环视。 "<"字符右边不能出现"/?p)"即"p"和"/p"。 
                MatchCollection m = Regex.Matches(str, @"<(?!/?p)[^>]+>");
                for (int i = 0; i < m.Count; i++)
                {
                    MessageBox.Show(m[i].Value); //结果<div>和</div>
                } 
                #endregion
    

    例子2:字符左右边同时限定(逆序和顺序环视)

                #region 
                string str = "aa<p>one</p>bb<div>two</div>cc";
                MatchCollection m = Regex.Matches(str, @"(?<=<div>)[^<]+(?=</div>)");
                for (int i = 0; i < m.Count; i++)
                {
                    MessageBox.Show(m[i].Value); //结果two
                } 
                #endregion
    

    例子3:数字格式化成用“,”的货币格式。  

  • 相关阅读:
    C++ 类或函数导出lib的两种方式
    Qt 中文乱码原因以及解决方法
    AStyle Clion中配置代码格式化工具(附:博主最满意格式)
    nltk中meteor_score的计算,报错
    Ubuntu20重装nvidia驱动
    No input file specified,php+Nginx,报错处理
    「cocos2dx」动画创建笔记
    「cocos2dx」物理引擎学习之box2D(1)
    golang_listen3_time
    face_to_face
  • 原文地址:https://www.cnblogs.com/crhdyl/p/4920946.html
Copyright © 2020-2023  润新知