游戏蛮牛学习群(纯技术交流,不闲聊):539178957
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   一笑而过2号

c# 正则表达式

个人分类: C# | 2018-6-13 22:54
标签:正则

 

 

正则很强大,每次用每次查。故整理一下,基于平台,做一些常用的操作测试。

正则表达式 是一种匹配输入文本的模式。.Net 框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。

 

 

常用如下:

 

                                   

                           

                                               



 

直接上代码:

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using System.Text.RegularExpressions;

 

public class NewBehaviourScript : MonoBehaviour

{

    void Start()

{

TestIsMatch();

        TestMatch();

        TestSplit();

        TestGroup();

        TestDelegate();

        TestReplace();

}

 

  /// <summary>

    /// IsMatch

    /// </summary>

    private void TestIsMatch()

    {

        bool a = Regex.IsMatch("3234", @"\d");

        Debug.Log(a); //true

        bool b = Regex.IsMatch("fdasg", @"\d");

        Debug.Log(b); //false

    }

 

 

 

 

 

    /// <summary>

    /// Match

    /// </summary>

    private void TestMatch()

    {

        string str1 = "9s%!@av3g#$|+90=~72";

        string pattern1 = @"\d|[a-z]";                //十进制数字匹配 a-z之前的的单个字符

        MatchCollection col = Regex.Matches(str1, pattern1);

        foreach (Match match in col)                  //遍历了所有符合规则的

        {

            Debug.Log(match.ToString());

        }

}

 

 

      

 

 

 

 

    /// <summary>

    /// Split

    /// </summary>

    private void TestSplit()

    {

        string str2 = "aa;bb,cc.dd[ee.ff";

        string pattern2 = @"[;,.]";

        string[] strArray = Regex.Split(str2, pattern2); //多个拆分

        for (int i = 0; i < strArray.Length; i++)

        {

            Debug.Log(strArray[i]);

        }

    }

 

 

 

    /// <summary>

    /// Group 分组

    /// </summary>

    private void TestGroup()

    {

        //分组

        string line = "lane=1;speed=30.3mph;acceleration=2.5mph/s";

        Regex reg = new Regex(@"speed\s*=\s*([\d\.]+)\s*(mph|km/h|m/s)*");

        Match matchs = reg.Match(line);

        Debug.Log(matchs.Groups[0].Value);          //speed=30.3mph

        Debug.Log(matchs.Groups[1].Value);          //30.3

        Debug.Log(matchs.Groups[2].Value);          //mph

 

        //分组命名访问  利用 (?<xxx>子表达式) 定义分组别名,这样就可以利用 Groups["xxx"] 进行访问分组/子表达式内容。

        Regex regCreatKey = new Regex(@"speed\s*=\s*(?<name1>[\d\.]+)\s*(?<name2>mph|km/h|m/s)*");

        Match matchsKey = regCreatKey.Match(line);

        Debug.Log(matchsKey.Groups[0].Value);      //speed=30.3mph

        Debug.Log(matchsKey.Groups[1].Value);      //30.3

        Debug.Log(matchsKey.Groups[2].Value);      //mph

        Debug.Log(matchsKey.Groups["name1"].Value);//30.3

        Debug.Log(matchsKey.Groups["name2"].Value);//mph

    }

 

 

 

 

 

 

 

 

    /// <summary>

    /// 使用MatchEvaluator委托

    /// </summary>

    private void TestDelegate()

    {

        var source = "123abc456ABCD789";

        Regex regex = new Regex("[A-Z]{3}", RegexOptions.IgnoreCase);    //忽略大小写

        var newSource = regex.Replace(source, new MatchEvaluator(OutPutMatch));

        Debug.Log("原字符串:" + source);                                //原字符串:123abc456ABCD789

        Debug.Log("替换后的字符串:" + newSource);                       //替换后的字符串:123 - abc - 456 - ABC - D789

 

    }

    private string OutPutMatch(Match match)

    {

        return "-" + match.Value + "-";

}

 

 

 

 

    /// <summary>

    /// 匹配替换

    /// </summary>

    void TestReplace()

    {

        string str = "aasb说什么啊";

        string pattern1 = @"a|b|什么阿";                  //全字匹配  --res1 :**s*说什么啊

        string pattern2 = @"[ab什么]";                    //只要有就匹配  --res2 :**s***

        string pattern3 = "^";

        string res1 = Regex.Replace(str, pattern1, "*");

        Debug.Log("res1 :" + res1);                       //res1 :**s*说什么啊

 

        string res2 = Regex.Replace(str, pattern2, "*");

        Debug.Log("res2 :" + res2);                       //res2 :**s***

 

        string res3 = Regex.Replace(str, pattern3, "开始:");

        Debug.Log("res3 :" + res3);                       //res3 :开始:aasb说什么啊

 

        string zb = "(120,30)";

        string r = Regex.Replace(zb, @"\(|\)", "");

        string[] array = r.Split(',');

        int x = int.Parse(array[0]);

        int y = int.Parse(array[1]);

        Debug.Log("x :" + x + " ___ y :" + y);           //x :120 ___ y :30

 

 

        MatchCollection col = Regex.Matches(zb, @"\d*,\d*");

        foreach (var item in col)

        {

            Debug.Log("__" +item.ToString());            //__120,30

        }

    }

}

 

 



  2018.06.13    23:08    阿成
















0 0

作者的其他最新博客

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号

个人分类

标签

阅读排行

评论排行

推荐博客

最新博客

关闭

站长推荐 上一条 /1 下一条

返回顶部