今天同事问我,如何将一串字符串中的数字取出来,此时不用正则表达式,更待何时。。。(Unity3D)

简介: 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。 例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

一、前言

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。 例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。


二、Unity使用正则表达式

匹配正整数:

using System.Text.RegularExpressions;
using UnityEngine;
public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "123";
        Debug.Log(IsNumber(temp));
    }
    ///<summary> 
    ///匹配正整数
    ///</summary> 
    ///<param name="strInput"></param>
    ///<returns></returns>
    public bool IsNumber(string strInput)
    {
        Regex reg = new Regex("^[0-9]*[1-9][0-9]*$");
        if (reg.IsMatch(strInput))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}
复制代码

结果:

网络异常,图片无法展示
|

匹配大写字母

using System.Text.RegularExpressions;
using UnityEngine;
public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "ABC";
        Debug.Log(IsNumber(temp));
    }
    ///<summary>
    ///匹配由26个英文字母的大写组成的字符串
    ///</summary>
    ///<param name="strInput"></param>
    ///<returns></returns>
    public bool IsCapital(string strInput)
    {
        Regex reg = new Regex("^[A-Z]+$");
        if (reg.IsMatch(strInput))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}
复制代码

结果:

网络异常,图片无法展示
|


三、Regex 类

Regex 类用于表示一个正则表达式。

下表列出了 Regex 类中一些常用的方法:

序号 方法 描述
1 public bool IsMatch( string input ) 指示 Regex 构造函数中指定的正则表达式是否在指定的输入字符串中找到匹配项。
2 public bool IsMatch( string input, int startat ) 指示 Regex 构造函数中指定的正则表达式是否在指定的输入字符串中找到匹配项,从字符串中指定的开始位置开始。
3 public static bool IsMatch( string input, string pattern ) 指示指定的正则表达式是否在指定的输入字符串中找到匹配项。
4 public MatchCollection Matches( string input ) 在指定的输入字符串中搜索正则表达式的所有匹配项。
5 public string Replace( string input, string replacement ) 在指定的输入字符串中,把所有匹配正则表达式模式的所有匹配的字符串替换为指定的替换字符串。
6 public string[] Split( string input ) 把输入字符串分割为子字符串数组,根据在 Regex 构造函数中指定的正则表达式模式定义的位置进行分割。

如需了解 Regex 类的完整的属性列表,请参阅微软的 C# 文档。


四、常用正则表达式

^-?\d+$        //匹配整数(包含正负整数)
^(-?\d+)(\.\d+)?$  //匹配浮点数(包含正负浮点数)
^[A-Za-z]+$     //匹配26个英文字母(包含大小写)
^[A-Z]+$      //匹配由26个英文字母(大写)
^[a-z]+$      //匹配由26个英文字母(小写)
^[A-Za-z0-9]+$    //匹配由数字和26个英文字母组成的字符串
^\w+$       //匹配由数字、26个英文字母或者下划线组成的字符串
\S{6,}        //不能为空 六位以上
[^\x00-\xff]    //匹配双字节字符(包括汉字在内)
\d+\.\d+\.\d+\.\d+  //匹配ip地址
复制代码
序号 代码 描述
1 ^\d+$   匹配非负整数(正整数 + 0)
2 ^[0-9]*[1-9][0-9]*$   匹配正整数
3 ^((-\d+)|(0+))$   匹配非正整数(负整数 + 0)
4 ^-[0-9]*[1-9][0-9]*$   匹配负整数
5 ^-?\d+$     匹配整数
6 ^\d+(\.\d+)?$   匹配非负浮点数(正浮点数 + 0)
7 ^(([0-9]+\.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$   匹配正浮点数
8 ^((-\d+(.\d+)?)|(0+(.0+)?))$   匹配非正浮点数(负浮点数 + 0)
9 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$   匹配负浮点数
10 ^(-?\d+)(.\d+)?$   匹配浮点数
11 ^[A-Za-z]+$   匹配由26个英文字母组成的字符串
12 ^[A-Z]+$   匹配由26个英文字母的大写组成的字符串
13 ^[a-z]+$   匹配由26个英文字母的小写组成的字符串
14 ^[A-Za-z0-9]+$   匹配由数字和26个英文字母组成的字符串
15 ^\w+$   匹配由数字、26个英文字母或者下划线组成的字符串
16 ^[\w-]+(.[\w-]+)*@[\w-]+(.[\w-]+)+$     匹配email地址
17 ^[a-zA-z]+://匹配(\w+(-\w+))(.(\w+(-\w+)))(?\S)?$   匹配url
18 [\u4e00-\u9fa5] 匹配中文字符的正则表达式
19 [^\x00-\xff] 匹配双字节字符(包括汉字在内)
20 String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
21 \n[\s| ]*\r 匹配空行的正则表达式
22 /<(.*)>.</\1>|<(.) /> 匹配HTML标记的正则表达式
23 (^\s*)|(\s*$) 匹配首尾空格的正则表达式


五、实例

实例 1  、匹配以 'm' 开头以 'e' 结尾的单词

using System.Text.RegularExpressions;
using UnityEngine;
public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "make maze and manage to measure it";
        MatchStr(temp);
    }
    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);
        }
    }
}
复制代码

网络异常,图片无法展示
|


实例2、 替换掉多余的空格

using System.Text.RegularExpressions;
using UnityEngine;
public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "Hello              World";
        MatchStr(temp);
    }
    public void MatchStr(string str)
    {
        Regex reg = new Regex("\\s+");
        Debug.Log(reg.Replace(str, " "));
    }
}
复制代码

网络异常,图片无法展示
|


实例3、 找到字符串中的数字并返回

using System.Text.RegularExpressions;
using UnityEngine;
public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "你好123不好";
        MatchStr(temp);
    }
    public int MatchStr(string str)
    {
        Regex r = new Regex(@"\d+", RegexOptions.IgnoreCase);
        Match m = r.Match(strNumber);
        int number = int.Parse(m.Value);
        return number;
    }
}


相关文章
|
6月前
|
JavaScript 前端开发 Java
正则表达式深度解析:匹配任意字符串
【4月更文挑战第1天】
3263 0
|
6月前
|
JavaScript 前端开发
用JavaScript正则表达式匹配对应字符串高亮显示,并过滤掉空格、<、>等HTML节点符号
用JavaScript正则表达式匹配对应字符串高亮显示,并过滤掉空格、<、>等HTML节点符号
|
1月前
|
JavaScript 前端开发 Java
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
|
1月前
|
Java API 索引
U4字符串以及正则表达式
【10月更文挑战第19天】在 Java 中,字符串是重要数据类型,支持多种操作如长度获取、字符访问、子串提取等。正则表达式提供强大的模式匹配和文本处理功能,通过 `Pattern` 和 `Matcher` 类实现。示例代码展示了如何使用正则表达式匹配单词字符。常用语法包括字符类、数量词、边界匹配和分组。
|
2月前
|
JavaScript 前端开发 Java
使用这个正则表达式来验证一个字符串是否符合特定的格式要求
使用这个正则表达式来验证一个字符串是否符合特定的格式要求
132 5
|
2月前
|
前端开发 C#
C# 一分钟浅谈:字符串操作与正则表达式
本文详细介绍C#中的字符串操作与正则表达式应用,涵盖字符串拼接、分割、查找及替换等基础操作,并通过实例讲解正则表达式的模式匹配、文本替换与分组捕获技巧。同时,文章还探讨了性能优化、复杂度管理和安全性等问题及解决策略,助你提升编程效率,应对实际开发挑战。
76 0
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
|
5月前
|
Python
Python使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。
|
5月前
|
数据采集 Java 开发者
正则表达式替换字符串的最佳实践与应用
正则表达式替换字符串的最佳实践与应用
|
6月前
|
数据挖掘 程序员 索引
探索Python的字符串操作和正则表达式
【4月更文挑战第8天】Python以其优雅的语法和强大的文本处理能力,让处理文本数据变得简单有趣。本文介绍了字符串操作和正则表达式的应用。在Python中,字符串是字符序列,支持拼接、索引和切片。正则表达式则提供灵活的模式匹配,用于查找、替换和分割文本。通过`re`模拝,我们可以实现对特定模式的精准匹配,如查找不分大小写的&quot;Python&quot;,或替换电子邮件地址为星号。学习和掌握这些工具,将使你在文本处理任务中更加高效,成为信息时代的艺术家。
32 1