估计要写几天

看得一个不错的正则教程包括字符串教程 C#字符串和正则表达式参考手册.pdf

正则所需要的命名空间是 using System.Text.RegularExpressions

它包含了8个类,用得最多是的Regex;

  Regex不仅可以用来创建正则表达式,而且提供了许多有用的方法。

  创建一个Regex对象

  new Regex(string pattern)

new Regex(string pattern,RegexOptions options)

第一个参数是个字符串   第二个参数正则配置的选项 有以下一些选项

  • IgnoreCase                 //是匹配忽略大小写      默认情况区分大小写
  • RightToLeft                 //从右到左查找字符串   默认是从左到右
  • None                          //不设定标志  这是默认选项,就是不设置第2个参数  表示区分大小写 从左到右
  • MultiLinc                    //指定了^和$可以匹配行的开头和结尾,也就是说使用了换行分割,每一行能得到不同的匹配
  • SingleLine                 //规定特殊字符"."匹配任一字符,换行符除外. 默认情况下特殊字符"."不匹配换行.(啥意思 都不匹配换行这个参数有啥用  没看懂)

IgnoreCase的例子

      string test = "Abcccccc";
Regex reg = new Regex("abc");
Console.WriteLine(reg.IsMatch(test)); //false
Regex reg1 = new Regex("abc",RegexOptions.IgnoreCase); //不区分大小写
Console.WriteLine(reg1.IsMatch(test));//true

RightToLeft的例子

     string test = "vvv123===456vvv";
Regex reg = new Regex("\\d+");// 123 从左到右 匹配连续数字
Console.WriteLine(reg.Match(test));
Regex reg1 = new Regex("\\d+",RegexOptions.RightToLeft);
Console.WriteLine(reg1.Match(test));// 456 从右到左 匹配连续数字

MultiLinc的例子

            StringBuilder input = new StringBuilder();
input.AppendLine("A bbbb A");
input.AppendLine("C bbbb C"); string pattern = @"^\w";
Console.WriteLine(input.ToString());
MatchCollection matchCol = Regex.Matches(input.ToString(), pattern, RegexOptions.Multiline);
foreach (Match item in matchCol)
{
Console.WriteLine("结果:{0}", item.Value);
}

IsMatch()

可以用来测试字符串,看他是否匹配正则表达式的模式.如果发现了一次匹配,就返回True.IsMatch有个静态方法重载

Regex.IsMatch(string str,string pattern);

            string str = "abcbbbbbbbb";
string reg = @"^abc";
Console.WriteLine(Regex.IsMatch(str,reg ));//静态的重载方法
Regex pattern = new Regex("^abc");
Console.WriteLine(pattern.IsMatch(str)); //生成对象上的方法

Replace()
        替换字符串一个匹配的模式,也有一个静态的重载方法,replace变体方法很多,我只记录我看到的

replace(string input ,string pattern,int count,int start) 第3个参数是总共替换几个,第4分参数是从字符串的什么位置开始替换

            string str = "123456abc";
Regex pattern = new Regex(@"\d+");
Console.WriteLine(pattern.Replace(str,""));
string pattern1 = @"\d+";
Console.WriteLine(Regex.Replace(str,pattern1,"")); string str1 = "asd,sss,asd,asdf,jjjj,cccc";
Regex pattern2 = new Regex(@"\w+");
Console.WriteLine(pattern2.Replace(str1, "v5v5", ));
Console.WriteLine(pattern2.Replace(str1, "v5v5", ,));
// Console.WriteLine(Regex.Replace(str1, @"\w+", "v5v5", 2)); 静态方法好像不行 会报错 哈哈

Match()

获得匹配的内容(只是一次的 MatchCollection可以获得所有的的匹配的集合)

生成的对象上的方法   的用法

reg.Match(string input,int start,int length)

第一个参数是要处理的字符串  第二哥参数开始的位置  第3个参数是需要匹配的长度。第2第3个参数可以不需要

静态方法  Regex.Match(string input , string pattern,RegexOptions options)

第3个参数可以不要

            string str = "vchaha vcoo vclielie vbguale vfgg vckk";
Regex pattern = new Regex(@"vc\w*");
Match matchMode = pattern.Match(str);
while (matchMode.Success)
{
Console.WriteLine(matchMode.Value);
matchMode = matchMode.NextMatch();
}
Console.WriteLine("-----------------------------------");
Match matchMode1 = Regex.Match(str, @"vc\w*");
while (matchMode1.Success)
{
Console.WriteLine(matchMode1.Value);
matchMode1 = matchMode1.NextMatch();
}

Match类的一些方法

  • NextMatch        返回下一个成功匹配的match对象
  • Result
  • Value               返回匹配的字符串
  • Length             匹配的长度
  • Index               第一个匹配内容在字符串中的起始位置
  • Groups             返回一个分组对象集合
  • Success            根据是否匹配成功返回ture or false

MatchCollection()

Regex.Matchs会返回MatchCollection类,这个集合包含了所有的Match的集合

            string input = "hahaha 123xiaodi 55nihao 66chifanlema ccc333 ccc";
Regex pattern = new Regex(@"\d+[a-z]+",RegexOptions.IgnoreCase);
MatchCollection matchsMade = pattern.Matches(input);
foreach (Match item in matchsMade)
{
Console.WriteLine(item.Value);
}

c# 正则表达式笔记的更多相关文章

  1. 【.NET】正则表达式笔记

    很早就听说正则表达式的强大,今天终于一睹它的真容,在这里记下学习时候的笔记,以便以后查看 1.正则表达式 用于描述字符串规则的的特殊的字符(正则表达式本身是字符串,用来描述字符串的相关规则,用于与其他 ...

  2. PHP正则表达式笔记和实例

    转自:  https://www.cnblogs.com/yafei236/p/4168290.html 本文主要介绍如何在PHP使用正则表达式,并附带几个实例. 这两天工作用到了正则表达式,发现自己 ...

  3. Python的正则表达式笔记

    1. "先抓大再抓小": 遇到一个正则表达式无法一次性筛选出所需内容时, 可以先在一个范围内筛选第一次, 再在小范围中筛选第二次. 2. pattern = re.compile( ...

  4. Javascript正则表达式笔记

    一.字符类 将单独的直接字符放进[]内,就组成了字符类.一个字符类和它所包含的任何字符都匹配. 例如:/[abc]/ 与abc三个字母的任意一个匹配. 同时,还可以定义否定字符类.利用^字符.例如:/ ...

  5. python 正则表达式笔记

    #!usr/bin/env python3 #-*- coding:utf-8 -*- #正则表达式 #在正则表达式中,如果直接给出字符,就是精确匹配.用\d可以匹配一个数字,\w可以匹配一个字母.数 ...

  6. apache url rewrite及正则表达式笔记

    什么是mod_rewrite? mod_rewrite是apache一个允许服务器端对请求url做修改的模块.入端url将和一系列的rule来比对.这些rule包含一个正则表达式以便检测每个特别的模式 ...

  7. JS正则表达式笔记

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 正则 描述 ...

  8. Python之正则表达式笔记

    概述 概念 Regular Expression 一种文本模式,描述在搜索文本时要匹配的一个或多个字符串 典型场景 数据验证.文本扫描.文本提取.文本替换.文本分割 语法 字面值 普通字符 需转义:\ ...

  9. 果然学习好是有道理的,学习Mysql与正则表达式笔记

    正则表达式是用来匹配文本的特殊的字符集合,将一个正则表达式与文本串进行比较,Mysql中用where子句提供支持,正则表达式关键字:regexp1.使用‘|’匹配两个串中的一个 2.使用‘[]’匹配几 ...

随机推荐

  1. Oracle的一些初步小东西

    经常要用数据库,让他自己启动的话,开机太慢,所以用命令启动方便点.  1.开启:    在运行中输入cmd,进入控制台,lsnrctl start回车,提示启动监听成功后net start Oracl ...

  2. BeagleBone Black教程之BeagleBone Black设备的连接

    BeagleBone Black教程之BeagleBone Black设备的连接 BeagleBone Black开发前需要准备的材料 经过上面的介绍,相信你已经对BeagleBone有了大致的了解, ...

  3. Python基础笔记(三)

    1. 循环与流程控制 (1) for myList1 = ["A", "B", "C", "D"] # 正序遍历 for ...

  4. codevs 2804 最大最小数质因数

    题目描述 Description 先输入n,n<=20;再依次输入n个不同的数,每个数<=1000000;找出最大数和最小数,并输出最大最小数的质因数,没有质因数则输出0. 输入描述 In ...

  5. 关于Android4.X的Alertdialog对话框

    最近在做Android4.0的开发,发现AlertDialog相比较以前有了较大变化,就是在触摸对话框边缘外部,对话框消失 于是研究其父类发现,可以设置这么一条属性,当然必须先AlertDialog. ...

  6. 解决 MyEclipse build workspace 慢,validation javascript 更慢的问题

    自从升级了MyEclipse到7.0,项目Build的时候总是很慢,显示Validating 那些js,html文件.不管我怎么调整 Windows > Preference > MyEc ...

  7. 解决 PermGen space Tomcat内存设置(转)

    在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat.jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常.这主要是由于应用服 ...

  8. HOWTO: Use STM32 SPI half duplex mode

    HOWTO: Use STM32 SPI half duplex mode I’ve got my hands onto some STM32F030F4P6 ARM-Cortex M0 proces ...

  9. Xcode 5.1.1 与 Xcode 6.0.1 的共存之路(建议大家在升级Xcode 6.0.1 的时候保留Xcode 5.1.1)

    最近升级了Xcode 6.0.1 与原有项目有不少冲突.建议大家谨慎升级,同时做好备份.二者共存推荐如下帖子. http://jingyan.baidu.com/article/1612d500457 ...

  10. C#编程(六十九)----------DLR简介

    DLR 一.近年来,在TIOBE公司每个月发布的编程语言排行榜中,C#总是能挤进前十名,而在最近十年来,C#总体上呈现上升的趋势.C#能取得这样的成绩,有很多因素,其中它在语言特性上的锐意进取让人印象 ...