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\b)"即"p"和"/p"。 
            MatchCollection m = Regex.Matches(str, @"<(?!/?p\b)[^>]+>");
            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:数字格式化成用“,”的货币格式。  

转载于:https://www.cnblogs.com/crhdyl/p/4920946.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值