c# 正则表达式的使用

亲手一个个测试过的噢


using UnityEngine;
using System.Collections;
using System.Text.RegularExpressions;

public class testRegex : MonoBehaviour
{

    public UILabel m_uiLabelOld = null;
    public UILabel m_uiLabelNew = null;

	// Use this for initialization
	void Start ()
    {
	
	}
	
	// Update is called once per frame
	void Update ()
    {
	
	}

    void OnGUI()
    {
        if(GUILayout.Button("aa"))
        {
            OnExample2();
        }
    }

    //简单使用举例
    private void OnSimpleUse1()
    {
        string strMsg = "abc123ABC456aBc";

        Regex reg = new Regex("abc",RegexOptions.IgnoreCase);//匹配字符串abc

        bool bIsMatch = reg.IsMatch(strMsg);//是否有找到匹配项
        Match match = reg.Match(strMsg);//在该字符串中,搜索到的第一个匹配项
        MatchCollection matchs = reg.Matches(strMsg);//在该字符串中,搜索到的所有匹配项

        string newStr = reg.Replace(strMsg, ",");//替换匹配项为替换字符,返回新字符串

    }

    //举例1
    private void OnExample1()
    {
        string strMsg = "abc123ABC456aBc123abcabc";
        //strMsg = "abc\n123abc";
        //strMsg = "a b c\f";//
        //strMsg = "\f a b   c\n\r\t";//测试\s  匹配任何空白符用的
        //strMsg = "plainb";
        strMsg = "hello";

        //匹配模式
        string strPattern = "";

        //匹配单个字符   中括号范围中的每一个单个字符都会匹配,不是按一个整体匹配,是按单个字符
        strPattern = "[1]";
        strPattern = "[0-9]";
        strPattern = "[acB]";
        strPattern = "[a-z]";
        strPattern = "[A-Z]";

        //@的作用
        //加了@字符串里可以直接转义“\”,否则需要添加转义字符“\”    需要这样写“\\”
        //例如:
        //string strTemp = "\d";//错误
        //string strTemp = @"\d";//正确
        //string strTemp = "\\d";//正确

        //string strTemp = "\";//错误
        //string strTemp = "\\";//正确   代表字符串一个反斜杠  可以自己输出验证一下


        //转义字符   特殊匹配符
        strPattern = @"\d";//匹配数字  等价于[0-9]
        strPattern = @".";//匹配除“\n”之外的任何单个字符

        strPattern = @"(abc)*";//匹配前面的零次或多次的子表达式   经过测试输出的效果,不是很理解 需要继续测试  比如 这个表达式来匹配“hello”也可以匹配成功 
        strPattern = @"(abc)+";//匹配前面的一次或多次的子表达式  经过测试这个就是字面上表达的意思,这个就是匹配abc这个字符串整体一次或多次

        strPattern = @"\f";//匹配一个换页符
        strPattern = @"\n";//匹配一个换行符
        strPattern = @"\r";//匹配一个回车符
        strPattern = @"\s";//匹配任何空白字符,包括空格、制表符、换页符、换行符、回车符等

        strPattern = @"(abc)";//(pattern)匹配pattern并获取这一匹配  这个就是匹配abc这个字符串,abc是一个整体
        strPattern = @"abc";//这个跟使用括号是一样的  匹配abc这个字符串,abc是一个整体
        strPattern = @"(abc)(123)";//这个相当于匹配(abc123)  匹配abc123这个字符串

        strPattern = @"(abc)|(123)";//x|y  匹配x或y  
        strPattern = @"abc|123";

        //此匹配模式数据源为 strMsg = "abc123ABC456aBc123abcabc"
        //{n}  n是一个非负整数,匹配前面的n次子表达式  相当于把前面的子表达式叠加在一起形成一个表达式,而不是说匹配几次的意思,不要理解错了
        strPattern = @"(abca){1}";//这个是匹配(abca)一次,这个可以在数据源中能匹配到
        strPattern = @"(abca){2}";//这个是匹配(abca)两次  相当于是匹配(abcaabca)  这个在数据源中是匹配不到的

        //^匹配开始位置
        strPattern = @"^[a]";//这个就是匹配数据源字符串的开头必须是以a这个字母开头才会匹配成功,否则就是匹配失败  而匹配的也仅仅是数据源开头的第一个单个字符而已
        strPattern = @"^[a-z]";//这个就是匹配开头必须是a-z中任意一个字母开头的才行,而匹配的也仅仅是数据源开头的第一个单个字符而已
        strPattern = @"^(abc)";//匹配项是数据源开头是不是abc这个字符串,如果匹配成功,替换的数据也仅仅是数据源的开头abc这个字符串

        //请注意如果^这个符号放在中括号内就产生了不一样的意义
        strPattern = @"[^a]";//除了a以外的任意单个字符
        strPattern = @"[^a-z]";//除了a-z这个范围以外的任意单个字符
        strPattern = @"[^abc]";//除了a或b或c以外的任意单个字符  例如 “[^abc]” 可以匹配 “plainb” 中的p和l和i和n  就是除了a或b之外的任意单个字符
        strPattern = @"(^abc)";//这个等价跟上面那个@"^(abc)" 


        Regex reg = new Regex(strPattern);

        bool bIsMatch = reg.IsMatch(strMsg);//是否有找到匹配项
        string newStr = reg.Replace(strMsg, ",");//替换匹配项为替换字符,返回新字符串

        Debug.Log(bIsMatch);
        Debug.Log(newStr);


        m_uiLabelOld.text = strMsg;
        m_uiLabelNew.text = newStr;
    }

    //匹配数字,举例
    private void OnExample2()
    {
        string strMsg = "abc123ABC456aBc123abcabc[456]";

        string strPattern = @"[0-9]";//这个匹配的是任意一个单个是数字的都会被匹配到
        strPattern = @"(\[)(\d+)(\])";//这个匹配的是一个组合的字符串,“[” “任意数字,而且是一个或多个” “]”  由这个三个部分组成的一个完整的字符串  ,这个数据源中匹配的只有一处
        strPattern = @"(\d+)";//这个匹配的是  一个或多个数字组合而成的一个字符串  这个数据源中匹配的有四处

        Regex reg = new Regex(strPattern);

        bool bIsMatch = reg.IsMatch(strMsg);//是否有找到匹配项
        string newStr = reg.Replace(strMsg, ",");//替换匹配项为替换字符,返回新字符串

        Debug.Log(bIsMatch);
        Debug.Log(newStr);


        m_uiLabelOld.text = strMsg;
        m_uiLabelNew.text = newStr;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值