C#正则表达式(Regex类)用法实例总结

目录
  • 前言
  • 1.正则表达式的概念
    • 1.1正则表达式的组成
      • 1.1.1元字符是什么
      • 1.1.2定位元字符
    • 1.2三个括号
    • 1.3简化正则表达式
    • 1.4@符号的作用
    • 1.5正则表达式可以实现四种功能:
  • 2.常用的正则表达式方法
    • 2.1静态方法IsMath
      • 2.1.1 关于参数RegexOptions
    • 2.2静态方法Match
    • 2.3静态方法Matchs
    • 2.4 Replaces函数
  • 总结

前言

最近学是C#的窗口应用开发编程,然后我在网站搜了一个早上,结果大多数是有一些基础的才看得懂,像对与我这个小白,看了半天都看不懂

最后,还是请教了大神,把我教会了

下面就我对C#的正则表达式的一些总结,第一次写博客,哈哈哈哈,写的不好请见谅,各位大佬们,爱你们。

1.正则表达式的概念

什么是正则表达式?

英文Regular Expression,是计算机科学的一一个 重要概念,她使用一种数学算法来解决计算机程序中的文本检索,匹配等问题,正则表达式语言是一种专门用于字符串处理的语言。在很多语言中都提供了对它的支持,C#也不例外,它可以帮我们解决下面的问题:例如账号、密码的验证等等、

1.1正则表达式的组成

正则表达式就是由普通字符以及特殊字符(成为元字符)组成的文字模式。该模式描述在查找文字

1.1.1元字符是什么

所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

1.1.2定位元字符

字符 说明

  • \b 匹配单词的开始或结束.
  • \B 匹配非单词的开始或结束
  • ^匹配必须出现在字符串的开头或行的开头
  • $匹配必须出现在以下位置: 字符串结尾、字符串结尾处的\n之前或行的结尾。
  • \A 指定匹配必须出 现在字符串的开头(忽略 Mutiline 选项)。
  • \z指定匹配必 须出现在字符串的结尾(忽略 Multiline选项)。
  • \z指定匹配必须出现在字符串的结尾或字符串结尾处的\n之前(忽略Multilie选项)。
  • \G 指定匹配必须出现在上- -个匹配结束的地方。与Match.NextMatch() -起使用时,此断言确保所有匹配都是连续的。

1.2三个括号

在正则表达式中有3种类型的括号

他们分别是:方括号、花括号、圆括号、(简称方花园)

方括号“[“和花括号“{“●

方括号"[“内是需要匹配的字符,

花括号”{"内是指定匹配字符的数量。

圆括号“(“ :表示用来分组的。

插入符号“入”:表示正则式的开始

美元符号“$” :表示正则式的结束

1.3简化正则表达式

实际命令 快捷命令
[0-9](数字) d
[a-z][0-9][_](数字、字母、下划线) W
0次或多次发生 *
至少一次发生 +
0次或1次发生 ?

1.4@符号的作用

我们经常在正则表达式字符串上加@字符,目的就是为了,不让编译器去解析其中的转义字符,,而作为正则表达式语法(元字符)存在。

在这里插入代码片

1.5正则表达式可以实现四种功能:

因为我看到其他博客说C#有很多方法可以用正则表达式,然后下面的一些例子,都用的是我认为,比较简单的方法。大神勿喷,┗|`O′|┛ 嗷~~

温馨提示:要运用下面的一些语句的要引入

using System.Text.RegularExpressions的命名空间

1,获取:通过正则表达式,从字符串中获取我们想要的部分

Regex reg = new Regex("[0-9]*");//这是搜索匹配0-9的数字
Console.WriteLine(reg.Match("12asda"));//最后提取出了12成功,嘻嘻

2,匹配:判断给定的字符中是否符合正则表达式的过滤逻辑 你可以认为正则表达式表述了一个字符串的书写规则

在这里的就得用从开头到结尾都为的数字为True,出现一个不为数字输出False
Regex reg = new Regex("^[0-9]*$");//判断整个字符串是否都为数字
Console.WriteLine(reg.IsMatch("12asda"));//最后输出False
Console.WriteLine(reg.IsMatch("124536346"));//最后输出True

3, 分割

1、用字符串分隔:
using System.Text.RegularExpressions;
string str="aaajsbbbjsccc";
string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);
foreach (string i in sArray) Response.Write(i.ToString() + "<br>");

输出结果:
aaa
bbb
ccc
2、用多个字符来分隔:
string str="aaajbbbscccjdddseee";
string[] sArray=str.Split(new char[2] {'j','s'});
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
输出结果:
aaa
bbb
ccc
ddd
eee
3、用单个字符来分隔:
string str="aaajbbbjccc";
string[] sArray=str.Split('j');
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
输出结果:
aaa
bbb
ccc

4, 替换

string s = "aaa12342525";
Regex r = new Regex("[0-9]");//正则表达式规则
Console.WriteLine(r);//这个输出为 [0-9] (我也不知道具体的原理)
s = r.Replace(s, "9", 1);//第一个参数是字符串,第二个是正确匹配字符串的时候要替换的字符,第三个参数就是正确匹配正则表达式,然后替换的次数
Console.Write(s);//输出aaa92342525

2.常用的正则表达式方法

2.1静态方法IsMath

1,静态方法IsMatch

IsMath(返回值是一个布尔类型,用于判断指定的字符串是否与正则表达式字符中匹配,它有三个重载方法)

bool IsMatch(string input, string pattern);

参数:

input: 要搜索匹配项的字符串。

pattern:要匹配的正则表达式模式。

返回结果:如果正则表达式找到匹配项,则为true;否则,为false。

bool IsMatch(string inpdt, string pattern, RegexOptions options);

参数:

input: 要搜索匹配项的字符串。

pattern:要匹配的正则表达式模式。

options:枚举值 的一一个按位组合, 这些枚举值提供匹配选项。

返回结果:如果正则表达式找到匹配项,则为true;否则,为false。

bool IsMatch(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);

参数:

input: 要搜索匹配项的字符串。

pattern:要匹配的正则表达式模式。

options:枚举值的一个按位组合,这些枚举值提供匹配选项。

matchTimeout:超时间隔

System.Text.RegularExpressions.Regex.InfiniteMatchTimeout 指示该方法不应超时。

返回结果:如果正则表达式找到匹配项,则为true;否则,为false。

2.1.1 关于参数RegexOptions

它是一个枚举类型,有以下枚举值

RegexOptions枚举值          内联标志         简单说明
ExplicitCapture               n           只有定义了命名或编号的组才捕获
IgnoreCase                    i           不区分大小写
IgnorePatternWhitespace       x           消除模式中的非转义空白并启用由#标记的注释。
MultiLine                     m           多行模式,其原理是修改了^和$的含义
SingleLine                    s            单行模式,和Multiline相对

2.2静态方法Match

Match的作用:使用指定的匹配选项在输入字符串中搜索指定的正则表达式的第一个匹配项。返回一个包含有关匹配的信息的对象。同样有三个重载方法,参数和IsMatch方法相同。

此外,在Regex类中, 还有一个同名的非静态方法,适用于多个实例的情况下,效率更高- - 些。

下面的关于Match的三个重载方法

  • Match Match(string input, string pattern);
  • Match Match(string input,string pattern, RegexOptions options); input,
  • Match Match(string string pattern, RegexOptions options, TimeSpan matchTimeout);

2.3静态方法Matchs

静态方法Matches,在指定的输入字符串中搜索指定的正则表达式的所有匹配项。跟上面方法不同之处,就是这个方法返回的是所有匹配项,他同样有三个重载方法,并且参数和Match方法完全相同此外,在Regex类中,还有一个同名的非静态方法,适用于多个实例的情况下,效率更高- -些。

2.4 Replaces函数

我们知道正则表达式主要是实现验证,提取,分割,替换字符的功能.Replace函数是实现替换功能的.

1 )Replace(string input,string pattern,string replacement)

//input是源字 符串,pattern是匹配的条件,replacement是替换的内容,就是把符合匹配条件pattern的内容转换成它

比如string result = Regex.Replace("abc", "ab", "#" );
➢//结果是#c,就是把字符串abc中的ab替换成#

2 )Replace(string input,string pattern,string replacement,RegexOptions options)

//RegexOptions是- 一个枚举类型,用来做- -些设定

//前面用注释时 就用到了RegexOptions.IgnorePatternWhitespace.如果在匹配时忽略大小写就可以用

RegexOptions.lgnoreCase
比如string result = Regex.Replace("ABc", "ab", “#" ,RegexOptions.lgnoreCase);

补充:在 Regex 类中使用 IsMatch 方法判断所匹配的字符串是否满足正则表达式的要求

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("请输入一个邮箱");
        string email = Console.ReadLine();
        Regex regex = new Regex(@"^(\w)+(\.\w)*@(\w)+((\.\w+)+)$");
        if (regex.IsMatch(email))
        {
            Console.WriteLine("邮箱格式正确。");
        }
        else
        {
            Console.WriteLine("邮箱格式不正确。");
        }
    }
}

总结

到此这篇关于C#正则表达式(Regex类)用法的文章就介绍到这了,更多相关C#正则表达式用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#中正则表达式的3种匹配模式

    在C#中,我们一般使用Regex类来表示一个正则表达式.一般正则表达式引擎支持以下3种匹配模式:单行模式(Singleline).多行模式(Multiline)与忽略大小写(IgnoreCase). 1. 单行模式(Singleline) MSDN定义:更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 \n 之外的每个字符匹配). 使用单行模式的典型场景是获取网页源码中的信息. 示例: 我们使用WebBrowser控件,从http://www.xxx.com/1.htm上获取了如下HTM

  • c# 正则表达式对网页进行有效内容抽取

    搜索引擎中一个比较重要的环节就是从网页中抽取出有效内容.简单来说,就是吧HTML文本中的HTML标记去掉,留下我们用IE等浏览器打开HTML文档看到的部分(我们这里不考虑图片). 将HTML文本中的标记分为:注释,script ,style,以及其他标记分别去掉: 1.去注释,正则为: output = Regex.Replace(input, @"<!--[^-]*-->", string.Empty, RegexOptions.IgnoreCase); 2.去scrip

  • C#正则表达式之Regex类用法详解

    Regex 类表示不可变(只读)的正则表达式.它还包含各种静态方法,允许在不显式创建其他类的实例的情况下使用其他正则表达式类. 正则表达式基础概述 什么是正则表达式 在编写字符串的处理程序时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 通常,我们在使用WINDOWS查找文件时,会使用通配符(*和?).如果你想查找某个目录下的所有Word文档时,你就可以使用*.doc进行查找,在这里,*就被解释为任意字符串.和通配

  • 常用正则 常用的C#正则表达式

    常用的C#正则表达式! "^\d+$" //非负整数(正整数 + 0)  "^[0-9]*[1-9][0-9]*$" //正整数  "^((-\d+)|(0+))$" //非正整数(负整数 + 0)  "^-[0-9]*[1-9][0-9]*$" //负整数  "^-?\d+$" //整数  "^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)  "^(([0-9

  • C#匹配中文字符串的4种正则表达式分享

    本文介绍在C#中使用匹配中文的正则表达式,包括纯中文.有中文.中文开头.中文结尾等几个正则表达式示例.在正则表达式中,中文可以通过Unicode编码来确定正则表达式范围. 在C#中,匹配中文的正则表达式用Unicode来表示时,范围是: [\u4e00-\u9fa5].所以,在此基础上,我们可以得到如下一些正则表达式. 1.匹配字符串全部是中文字符的正则表达式 复制代码 代码如下: "^[\u4e00-\u9fa5]+$" 说明:"^"表示字符串开头,"$

  • C#正则表达式使用方法示例

    第一步先要引入有关正则式的命名空间: 复制代码 代码如下: using System.Text.RegularExpressions; 第二步用指定的正则式构建一个正则表达式对象,下面的正则式是用来搜索长度为10的a-z的英文字母: 复制代码 代码如下: Regex obj = new Regex("[a-z]{10}"); 最后,根据正则式在指定数据中检索匹配项,如果匹配IsMatch方法就会返回true. 复制代码 代码如下: MessageBox.Show(obj.IsMatch

  • c#匹配整数和小数的正则表达式

    匹配整数的一种表达式: Regex.IsMatch(inputerstr, "^([0-9]{1,})$") 其中Inputerstr是要匹配的字符串 这个表达式仅匹配整数,如果是整数形式返回true,否则为false 匹配小数格式的表达式: Regex.IsMatch(inputerstr, "^([0-9]{1,}[.][0-9]*)$") 其中Inputerstr是要匹配的字符串 这个表达式仅匹配数字中有小数点格式的数字,如果是带有小数点格式的纯数字,返回tr

  • C#使用正则表达式实例

    正则表达式可以被看成是一个强大的通配符(通用匹配符号).大多数人都应该很熟悉通配符,例如,当我们看到一个诸如"SAMS"的表达式,那么一个文本串中任何以SAMS开头的字符串都可以与这个表达式匹配.正则表达式提供了比这种通配符能力更强.控制规则更复杂.功能更完善的匹配机制. 本文将对.NET框架提供的支持正则表达式的类做一个概要介绍.要想获得有关正则表达式的更多知识,可参考<Regular Expression Pocket Reference >(O'Reilly Medi

  • C# 正则表达式 使用介绍

    为了避免以后这样的情况,在此记录下正则表达式的一些基本使用方法附带小的实例.让以后在使用时能一目了然知道他的使用,为开发节约时间,同时也分享给大家 正则元字符 在说正则表达式之前我们先来看看通配符,我想通配符大家都用过.通配符主要有星号(*)和问号(?),用来模糊搜索文件.winodws中我们常会使用搜索来查找一些文件.如:*.jpg,XXX.docx的方式,来快速查找文件.其实正则表达式和我们通配符很相似也是通过特定的字符匹配我们所要查询的内容信息.已下代码都是区分大小写. 常用元字符 代码

  • C#正则表达式匹配与替换字符串功能示例

    本文实例讲述了C#正则表达式匹配与替换字符串功能.分享给大家供大家参考,具体如下: 事例一:\w+=>[A-Za-z1-9_],\s+=>任何空白字符,()=>捕获 string text = @"public string testMatchObj string s string match "; string pat = @"(\w+)\s+(string)"; // Compile the regular expression. Regex

随机推荐