c# 正则表达式笔记

c# 正则表达式笔记

正则所需要的命名空间是 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,"6666"));            string pattern1 = @"\d+";            Console.WriteLine(Regex.Replace(str,pattern1,"6666"));

            string str1 = "asd,sss,asd,asdf,jjjj,cccc";            Regex pattern2 = new Regex(@"\w+");            Console.WriteLine(pattern2.Replace(str1, "v5v5", 2));            Console.WriteLine(pattern2.Replace(str1, "v5v5", 2,8));            // 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);                        }

时间: 2024-10-03 13:10:23

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

javascript正则表达式笔记(转载)

在javascript里面的定义 1.通过RegExp构造函数定义一个正则表达式.第一个参数为正则表达式以字符串传入,第二个参数为修饰符也以字符串传入. 例:var caps = new RegExp("[A-Z]", "g"); 2.直接定义一个正则表达式直接量,表达式右正斜杠符号"/"分隔,后直接跟修饰符.(推荐用这种) 例:var caps = /[A-Z]/g; javascript正则表达式常用的字符 字符 描述 例子 [exp] 对于

整理的正则表达式笔记

最近在学python中的re模块 自己打印了一份正则表达式资料,看了一中午的笔记,拿出来和大家分享. 纯文本正则可匹配 i标志 强行不区分大小写 c.t 匹配 cat cbt.... .匹配任意单个字符 ..任意两个字符 [ab]只匹配ab [a-zA-Z0-9] 取色#[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9] 改良取色#[a-fA-F0-9]{6} [^0-9]非匹配 [0-9]反斜线转义匹配方括号 \

正则表达式笔记

正则表达式到底是什么东西?在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码.常用元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 常用限定符 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次

javascript正则表达式笔记

g 代表全局匹配m 代表可以进行多行匹配i 代表不区分大小写匹配^ 匹配输入字符串的开始位置$ 匹配输入字符串的结束位置* 匹配前面的子表达式零次或多次. 等价于{0,}+ 匹配前面的子表达式一次或多次. 等价于{1,}? 匹配前面的子表达式零次或一次. 等价于{0,1} , 当该字符跟在任何一个其他限制符(*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的.非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串.例如,对于字符串 "

学习正则表达式笔记(二)

正则匹配的各种模式 1.择一匹配(|) 择一匹配用管道符号(|),也就是竖线表示.代表可以从多个模式中选择一个,可用于分割正则表达式.例如: ABC | abc 表示即可以匹配 ABC,又可以匹配 abc. 2.匹配任意单个字符 点号(.)可以匹配除换行符 \n 以外的任意字符,无论是空格,字母,数字,可打印字符.不可打印字符,还是一个符号,使用点号都能够匹配它们. 在Python中,如果使用模块属性re.S 也就是 re.DOTALL,那么换行符 \n 也可以匹配了. 3.从字符串起始或者结尾

python 正则表达式 笔记

{jpg,gif} jpg或者gif两个单词 [jpg|gif] 凡是由jpgif这几个字母组成的字符 [001-010] 数字001-010之间10个数字 $ curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG 这样产生的下载,就是 ~zzh/001.JPG ~zzh/002.JPG ... ~zzh/201.JPG ~nick/001.JPG ~nick/002.JPG ... ~nick/201.JPG 调用正则表达式中

学习正则表达式笔记

1.正则表达式简介 正则表达式为高级的文本模式匹配,抽取,与和或形式的搜索和替换功能提供了基础.也就是说正则表达式(RegEx)能匹配到多个字符,你就可以很容易的操作这些匹配到的字符,只要你运用正确的字符和特殊符号. Python中通过导入 re 模块来支持正则表达式. 2.常见的正则表达式符号和特殊字符 2.1符号 符号表示法 描述 示例 literal 匹配文本字符串的字面值 literal,即匹配原始字符 foo re1|re2 匹配正则表达式 re1 或者 re2,中间的 | 相当于或,

java正则表达式笔记

1.正则表达式的概述和简单使用 A:正则表达式 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. 作用:比如注册邮箱,邮箱有用户名和密码,一般会对其限制长度,这个限制长度的事情就是正则表达式做的 作用:专门用于操作字符串                特点:用一些特定的符号来表示一些代码的操作.这样就简化书写. 所以学正则表达式,就是学习一些特殊符号的使用. 好处:可以简化对字符串的操作 弊端:符号定义越多,正则越长,阅读性越差 B:案例演

正则表达式笔记 sed工具

[:alnum:] 代表英文大小写字符及数字,即0-9 A-Z a-z [:alpha:] 代表任何英文大小写字符,即A-Z a-z [:blank:] 代表空格键与TAB键 [:cntrl:] 代表键盘上面的控制案件,即包括CR LF TAB DEL等 [:digit:] 代表数字 0-9 [:graph:] 除了空格键与TAB键外其他的所有键 [:lower:] 代表小写字符 a-z [:print:] 代表任何可以被打印出来的字符 [:punct:] 代表标点符号 即"';:!#$等 [: