Unity3D正则表达式的使用
系列文章目录
unity工具
文章目录
- 系列文章目录
- 前言
- 一、匹配正整数的使用方法
- 1-1、代码如下
- 1-2、结果如下
- 二、匹配大写字母
- 2-1、代码如下
- 1-2、结果如下
- 三、Regex类
- 3-1、Match()
- 3-2、Matches()
- 3-3、IsMatch()
- 四、定义正则表达式
- 4-1、转义字符
- 4-2、字符类
- 4-3、定位点
- 4-4、限定符
- 五、常用的正则表达式
- 5-1、校验数字的表达式
- 5-2、校验字符的表达式
- 5-3、校验特殊需求的表达式
- 六、正则表达式实例
- 6-1、匹配字母的表达式
- 6-2、替换掉空格的表达式
- 七、完整的测试代码
- 总结
前言
大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
正则表达式,又称规则表达式,在代码中常简写为regex、regexp,常用来检索替换那些符合某种模式的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。
提示:以下是本篇文章正文内容,下面案例可供参考
unity使用正则表达式
一、匹配正整数的使用方法
1-1、代码如下
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
/// <summary>
/// 匹配正整数
/// </summary>
public class Bool_Number : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){string num = "456";Debug.Log("结果是:"+IsNumber(num));}public bool IsNumber(string strInput){Regex reg = new Regex("^[0-9]*[1-9][0-9]*$");if (reg.IsMatch(strInput)){return true;}else{return false;}}
}
1-2、结果如下
二、匹配大写字母
检查文本是否都是大写字母
2-1、代码如下
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
/// <summary>
/// 匹配大写字母
/// </summary>
public class Bool_Majuscule : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){string NUM = "ABC";Debug.Log("NUM结果是:" + IsCapital(NUM));string num = "abc";Debug.Log("num结果是:" + IsCapital(num));}public bool IsCapital(string strInput){Regex reg = new Regex("^[A-Z]+$");if (reg.IsMatch(strInput)){return true;}else{return false;}}
}
1-2、结果如下
三、Regex类
正则表达式是一种文本模式,包括普通字符和特殊字符,正则表达式使用单个字符描述一系列匹配某个句法规则的字符串 常用方法如下
如需了解更详细文档请参考:https://www.runoob.com/csharp/csharp-regular-expressions.html
3-1、Match()
测试代码如下
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;public class Bool_Regex_Match : MonoBehaviour
{void Start(){string temp = "aaaa(bbb)cccccc(dd)eeeeee";IsMatch(temp);}///<summary>///在输入的字符串中搜索正则表达式的匹配项///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch(string strInput){string pattern = "\\(\\w+\\)";Match result = Regex.Match(strInput, pattern);Debug.Log("第一种重载方法:" + result.Value);Match result2 = Regex.Match(strInput, pattern, RegexOptions.RightToLeft);Debug.Log("第二种重载方法:" + result2.Value);}}
测试结果
3-2、Matches()
代码如下:
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;public class Bool_Regex_Matches : MonoBehaviour
{void Start(){string temp = "aaaa(bbb)aaaaaaaaa(bb)aaaaaa";IsCapital(temp);}///<summary>///在输入的字符串中搜索正则表达式的匹配项///</summary>///<param name="strInput">输入的字符串</param>public void IsCapital(string strInput){string pattern = "\\(\\w+\\)";MatchCollection results = Regex.Matches(strInput, pattern);for (int i = 0; i < results.Count; i++){Debug.Log("第一种重载方法:" + results[i].Value);}MatchCollection results2 = Regex.Matches(strInput, pattern, RegexOptions.RightToLeft);for (int i = 0; i < results.Count; i++){Debug.Log("第二种重载方法:" + results2[i].Value);}}
}
结果如下
3-3、IsMatch()
代码如下:
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;public class Bool_Regex_IsMatch : MonoBehaviour
{void Start(){string temp = "aaaa(bbb)cccccc(dd)eeeeeeee";IsMatch(temp);}///<summary>///在输入的字符串中搜索正则表达式的匹配项///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch(string strInput){string pattern = "\\(\\w+\\)";bool resultBool = Regex.IsMatch(strInput, pattern);Debug.Log(resultBool);bool resultBool2 = Regex.IsMatch(strInput, pattern, RegexOptions.RightToLeft);Debug.Log(resultBool2);}
}
结果如下
四、定义正则表达式
4-1、转义字符
总结:
方法如下:
///<summary>///在输入的字符串中搜索正则表达式的匹配项 (转义字符)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch(string strInput){string pattern = "\\r\\n(\\w+)";Match resultBool = Regex.Match(strInput, pattern);Debug.Log(resultBool.Value);}
4-2、字符类
总结:
方法如下:
///<summary>///在输入的字符串中搜索正则表达式的匹配项 (字符类)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_1(string strInput){string pattern = "(\\d+)";Match resultBool = Regex.Match(strInput, pattern);Debug.Log(resultBool.Value);}
4-3、定位点
正则表达式中的定位点可以设置匹配字符串的索引位置,所以可以使用定位点对要匹配的字符进行限定,以此得到想要匹配到的字符串
总结:
方法代码如下:
///<summary>///在输入的字符串中搜索正则表达式的匹配项 (定位点)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_2(string strInput){string pattern = "(\\w+)$";Match resultBool = Regex.Match(strInput, pattern);Debug.Log(resultBool.Value);}
4-4、限定符
正则表达式中的限定符指定在输入字符串中必须存在上一个元素的多少个实例才能出现匹配项
方法如下:
///<summary>///在输入的字符串中搜索正则表达式的匹配项 (限定符)///</summary> ///<param name="strInput">输入的字符串</param>public void IsMatch_3(string strInput){string pattern = "\\w{5}";Match resultBool = Regex.Match(strInput, pattern);Debug.Log(resultBool.Value);}
五、常用的正则表达式
5-1、校验数字的表达式
代码如下:
///<summary>///在输入的字符串中搜索正则表达式的匹配项 (常用的校验数字表达式)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_4(string strInput){Regex reg = new Regex(@"^[0-9]*$");bool result = reg.IsMatch(strInput);Debug.Log(result);}
5-2、校验字符的表达式
字符如果包含汉字 英文 数字以及特殊符号时,使用正则表达式可以很方便的将这些字符匹配出来
代码如下:
///<summary>///在输入的字符串中搜索正则表达式的匹配项 (常用的校验字符表达式)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_5(string strInput){Regex reg = new Regex(@"^[\u4E00-\u9FA5A-Za-z0-9]");bool result = reg.IsMatch(strInput);Debug.Log("匹配中文、英文和数字:" + result);Regex reg2 = new Regex(@"^[A-Za-z0-9]");bool result2 = reg2.IsMatch(strInput);Debug.Log("匹配英文和数字:" + result2);}
5-3、校验特殊需求的表达式
方法如下:
///<summary>///在输入的字符串中搜索正则表达式的匹配项 (常用的校验特殊需求的表达式)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_6(){Regex reg = new Regex(@"[a-zA-z]+://[^\s]*");bool result = reg.IsMatch("http://www.baidu.com");Debug.Log("匹配网址:" + result);Regex reg2 = new Regex(@"^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$");bool result2 = reg2.IsMatch("13512341234");Debug.Log("匹配手机号码:" + result2);}
六、正则表达式实例
(经常用到的)
6-1、匹配字母的表达式
开发中经常要用到以某个字母开头或某个字母结尾的单词
下面使用正则表达式匹配以m开头,以e结尾的单词
代码如下:
///<summary>///在输入的字符串中搜索正则表达式的匹配项 (匹配以m开头,以e结尾的表达式)///</summary>///<param name="strInput">输入的字符串</param>public void MatchStr(string str){Regex reg = new Regex(@"\bm\S*e\b");MatchCollection mat = reg.Matches(str);foreach (Match item in mat){Debug.Log(item);}}
6-2、替换掉空格的表达式
项目中,总会遇到模型名字上面有多余的空格,有时候会影响查找,所以下面演示如何去掉多余的空格
代码如下:
///<summary>///在输入的字符串中搜索正则表达式的匹配项 (去掉多余的空格的表达式)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_8(string str){Regex reg = new Regex("\\s+");Debug.Log(reg.Replace(str, " "));}
七、完整的测试代码
代码如下:
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;public class Bool_Definition : MonoBehaviour
{void Start(){#region 转义字符测试string temp = "\r\nHello\nWorld.";IsMatch(temp);#endregion#region 字符类测试string temp1 = "Hello World 2024";IsMatch_1(temp1);#endregion#region 定位点测试string temp2 = "Hello World 2024";IsMatch_2(temp2);#endregion#region 限定符测试string temp3 = "Hello World 2024";IsMatch_3(temp3);#endregion#region 校验数字测试string temp4 = "2024";IsMatch_4(temp4);#endregion#region 校验字符测试string temp5 = "你好,时间,2024";IsMatch_5(temp5);#endregion#region 校验特殊需求测试 IsMatch_6();#endregion#region 匹配字母实例测试 string temp7 = "make mave move and to it mease";IsMatch_7(temp7);#endregion#region 去掉空格实例测试 string temp8 = "GOOD 2024";IsMatch_8(temp8);#endregion}///<summary>///在输入的字符串中搜索正则表达式的匹配项 (转义字符)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch(string strInput){string pattern = "\\r\\n(\\w+)";Match resultBool = Regex.Match(strInput, pattern);Debug.Log(resultBool.Value);}///<summary>///在输入的字符串中搜索正则表达式的匹配项 (字符类)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_1(string strInput){string pattern = "(\\d+)";Match resultBool = Regex.Match(strInput, pattern);Debug.Log(resultBool.Value);}///<summary>///在输入的字符串中搜索正则表达式的匹配项 (定位点)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_2(string strInput){string pattern = "(\\w+)$";Match resultBool = Regex.Match(strInput, pattern);Debug.Log(resultBool.Value);}///<summary>///在输入的字符串中搜索正则表达式的匹配项 (限定符)///</summary> ///<param name="strInput">输入的字符串</param>public void IsMatch_3(string strInput){string pattern = "\\w{5}";Match resultBool = Regex.Match(strInput, pattern);Debug.Log(resultBool.Value);}///<summary>///在输入的字符串中搜索正则表达式的匹配项 (常用的校验数字表达式)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_4(string strInput){Regex reg = new Regex(@"^[0-9]*$");bool result = reg.IsMatch(strInput);Debug.Log(result);}///<summary>///在输入的字符串中搜索正则表达式的匹配项 (常用的校验字符表达式)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_5(string strInput){Regex reg = new Regex(@"^[\u4E00-\u9FA5A-Za-z0-9]");bool result = reg.IsMatch(strInput);Debug.Log("匹配中文、英文和数字:" + result);Regex reg2 = new Regex(@"^[A-Za-z0-9]");bool result2 = reg2.IsMatch(strInput);Debug.Log("匹配英文和数字:" + result2);}///<summary>///在输入的字符串中搜索正则表达式的匹配项 (常用的校验特殊需求的表达式)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_6(){Regex reg = new Regex(@"[a-zA-z]+://[^\s]*");bool result = reg.IsMatch("http://www.baidu.com");Debug.Log("匹配网址:" + result);Regex reg2 = new Regex(@"^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$");bool result2 = reg2.IsMatch("13512341234");Debug.Log("匹配手机号码:" + result2);}///<summary>///在输入的字符串中搜索正则表达式的匹配项 (匹配以m开头,以e结尾的表达式)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_7(string str){Regex reg = new Regex(@"\bm\S*e\b");MatchCollection mat = reg.Matches(str);foreach (Match item in mat){Debug.Log(item);}}///<summary>///在输入的字符串中搜索正则表达式的匹配项 (去掉多余的空格的表达式)///</summary>///<param name="strInput">输入的字符串</param>public void IsMatch_8(string str){Regex reg = new Regex("\\s+");Debug.Log(reg.Replace(str, " "));}}
总结
以后有更好用的会继续补充
不定时更新Unity开发技巧,觉得有用记得一键三连哦。
相关文章:

Unity3D正则表达式的使用
系列文章目录 unity工具 文章目录 系列文章目录前言一、匹配正整数的使用方法1-1、代码如下1-2、结果如下 二、匹配大写字母2-1、代码如下1-2、结果如下 三、Regex类3-1、Match()3-2、Matches()3-3、IsMatch() 四、定义正则表达式…...

SpringBoot,TDengine时序数据库,实现物联网,车联网大批量数据更新最佳实践。
简介 TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,对业务运行状态进行实时监测、预警,提供实时的商业洞察。其…...

【CSS】常见
一. 溢出隐藏 1.1 单行文本溢出 .content{max-width:200px; /* 定义容器最大宽度 */overflow:hidden; /* 隐藏溢出的内容 */text-overflow:ellipsis; /* 溢出部分...表示 */white-space: nowrap; /* 确保文本在一行内显示 */ }问题:display:flex 和 ellipsis 冲…...

Django实战
一、开发登录表单 def login_form(request):html <html><body><form method"post">用户名:<input name "username" type"text"></input></br>密码:<input name "password" type…...

redis(1)
文章目录 一、redis基础redis简介redis 特性单线程redis 对比 memcachedredis 典型应用场景 二、redis安装及连接yum安装redis查看yum仓库redis版本yum安装 redis 编译安装 redis编译安装前台启动redis启动多实例解决启动时的三个警告提示创建 redis 用户编辑 redis 服务器启动…...

【RTP】webrtc 学习2: webrtc对h264的rtp打包
切片只是拷贝帧的split的各个部分到新的rtp 包的封装中。并没有在rtp包本身标记是否为关键帧FU-A 切片 输入的H.264 数据进行split :SplitNalu SplitNalu : 按照最大1200字节进行切分 切分后会返回一个数组 对于FU-A :split的数据总大小是 去掉一个字节的nalu header size …...
【搜索术】代码阅读理解学习笔记
学习资料 《理解源代码》 1 静态阅读 1.1 目标结构 常见目录名含义docs项目文档examples示例代码...

vue 打包下载多层zip文件
npm install jszip npm install file-saverimport JSZip from "jszip"; import FileSaver from "file-saver"; import {Message} from "view-design";/*** 下载文件 传数组* fileList* [* {* type:file,* name:17034953113790548.png,…...

Flink实战五_状态机制
接上文:Flink实战四_TableAPI&SQL 在学习Flink的状态机制之前,我们需要理解什么是状态。回顾我们之前介绍的很多流计算的计算过程,有些计算方法,比如说我们之前多次使用的将stock.txt中的一行文本数据转换成Stock股票对象的ma…...
SQL中having与where的区别 简单明了
having子句与where都是设定条件筛选的语句,有相似之处也有区别。 having与where的区别: having是在分组后对数据进行过滤 where是在分组前对数据进行过滤 having后面可以使用聚合函数 where后面不可以使用聚合 在查询过程中执行顺序:from>where>g…...

Transformer 自然语言处理(二)
原文:Natural Language Processing with Transformers 译者:飞龙 协议:CC BY-NC-SA 4.0 第五章:文本生成 基于 Transformer 的语言模型最令人不安的特点之一是它们生成的文本几乎无法与人类写的文本区分开。一个著名的例子是 Ope…...

软件测试之软件缺陷管理
什么是软件缺陷 标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背 软件缺陷的生命周期 一个缺陷的正常生命周期是 新建ÿ…...
分布式锁(Distributed Lock)介绍(基于数据库(mysql);基于缓存(redis);基于ZooKeeper等分布式协调服务)
文章目录 分布式锁介绍1. 分布式锁的工作原理1.1 锁的基本概念1.2 工作机制 2. 分布式锁的实现方式2.1 基于数据库的分布式锁2.2 基于Redis的分布式锁2.3 基于ZooKeeper的分布式锁 3. 分布式锁的挑战3.1 死锁问题3.2 锁粒度问题粗粒度锁细粒度锁锁粒度的选择 3.3 锁的公平性问题…...
10 ISIS 基础 报文 状态
10 ISIS 基础 报文 状态 09 ISIS 大纲-CSDN博客 •看完本篇博客,您将能知道以下内容: ▫描述IS-IS的基本概念 ▫描述IS-IS的工作原理 ▫描述IS-IS与OSPF的差异 ▫实现IS-IS的常用配置 ▫实现 ISIS 的常用到的认证...

Python第三方扩展库Matplotlib
Python第三方扩展库Matplotlib Matplotlib 是第三方库,不是Python安装程序自带的库,需要额外安装,它是Python的一个综合性的绘图库,提供了大量的绘图函数用于创建静态、动态、交互式的图形和数据可视化,可以帮助用户创…...

单例模式有几种写法?请谈谈你的理解?
为什么有单例模式? 单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利…...

帕鲁幻兽 一键开服 简单到爆 教你10秒实现 帕鲁幻兽私服联机服务器搭建
幻兽帕鲁是一款非常受欢迎的游戏,最近在社区中呈现了爆火的趋势,在线人数已经突破了百万级别。由于社区的热度不断上升,官方服务器开始出现了不稳定和卡人闪退的情况。搭建一个私人服务器可能是一个最稳定而舒适的解决方案。通过搭建私人服务…...
自动化报告pptx-python|如何将pandas的表格写入PPTX(二)
本篇延续:自动化报告的前奏|使用python-pptx操作PPT(一) 因为在pptx-python中使用table,需要单个cell逐一输入,于是在想有没有pandas可以直接读入的方式, 有两个开源项目有类似的功能: PandasToPowerpointmspandas其中mspandas写的比较复杂,PandasToPowerpoint比较易懂…...
Ruby详解及安装流程
文章目录 一、Ruby详解二、Ruby安装流程三、Ruby案例四、Ruby常见问题五、Ruby优缺点六、热门文章 一、Ruby详解 Ruby是一种高级编程语言,具有简单易学、灵活多变、优雅美丽的语法特点。它是一种面向对象的编程语言,具有动态类型和解释型语言的特性。在…...

免费的ChatGPT网站 ( 7个 )
ChatGPT的核心功能是基于用户在输入时的语言或文本生成相应的回复或继续内容。此外,它还能够完成多种任务,如撰写邮件、视频脚本、文案、翻译、代码编写以及撰写论文等。 博主归纳总结了7个国内非常好用,而且免费的chatGPT网站,AI…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...