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…...
Windows网络音频革命:Scream虚拟声卡完整指南
Windows网络音频革命:Scream虚拟声卡完整指南 【免费下载链接】scream Virtual network sound card for Microsoft Windows 项目地址: https://gitcode.com/gh_mirrors/sc/scream 还在为有线音频的束缚而烦恼吗?想象一下,将你的Window…...
用一块老芯片玩转计数器:手把手教你用74390与非门搭一个24小时制时钟电路
用一块老芯片玩转计数器:手把手教你用74390与非门搭一个24小时制时钟电路 记得大学时第一次在实验室看到LED数字管跳动的那种兴奋感吗?那种从抽象理论到具象显示的魔法时刻,正是电子设计的魅力所在。今天我们就用上世纪70年代诞生的74390这块…...
构建企业内部知识问答Agent时如何借助Taotoken降低模型依赖风险
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 构建企业内部知识问答Agent时如何借助Taotoken降低模型依赖风险 应用场景类,企业在开发基于大模型的内部分析Agent时&a…...
RoPE与KV缓存优化:提升Transformer长序列处理能力
1. 旋转位置编码(RoPE)技术解析旋转位置编码(Rotary Position Embedding, RoPE)是近年来Transformer架构中位置编码技术的重要突破。传统Transformer使用绝对或相对位置编码,而RoPE通过旋转矩阵实现位置信息的注入&…...
B站成分检测器:5分钟快速上手智能识别工具
B站成分检测器:5分钟快速上手智能识别工具 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分,支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker 你是否曾在B站评…...
异常检测实战:从面试陷阱到产线落地的20个关键问题
1. 项目概述:这不是刷题手册,而是一张通往机器学习工程现场的“通关地图”“Crack ML Interviews with Confidence: Anomaly Detection (20 Q&A)”——这个标题里藏着三个被绝大多数求职者严重低估的关键信号:Crack不是“背答案”&#x…...
萌新学习第九天,python篇,内置函数
内置函数:一句话:Python 自带的、不需要A import 导入就可以直接使用的函数。比如你经常用的 print()、len()、input()、type() 都是内置函数。输出类:函数作用print()打印输出input()从键盘读取输入format()格式化字符串类型转换类:函数作用…...
解锁 AI 新用法:2026 普通人办事效率翻倍实战指南
2026 年 5 月 22 日,国产 AI 大模型周调用量连续两周领跑全球,智能体(Agent)技术从概念落地为全民工具,AI 正从 “科技圈热词” 彻底变成普通人的 “效率外挂”。当下,文心一言 5.1、DeepSeek V4 等国产模型…...
RV1126B平台I2C驱动ADS1115实战:从硬件接线到应用层代码
1. 项目概述与核心思路最近在折腾瑞芯微RV1126B这块板子,用的是EASY-EAI Nano-TB开发套件。项目里需要接几个传感器和一个小屏幕,I2C总线是绕不开的。虽然Linux内核已经把I2C驱动封装得很好了,但真要在应用层把它用起来、用稳了,特…...
避坑指南:在STM32F407上移植QRcode库生成二维码,这些内存和显示细节要注意
STM32F407二维码生成实战:内存优化与显示调校的避坑法则 在嵌入式设备上实现二维码生成功能,看似简单的需求背后却暗藏玄机。当开发者兴冲冲地将开源QRcode库移植到STM32F407平台时,往往会遭遇一系列"意外":内存突然耗尽…...
