欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#正则匹配RegexOptions选项的组合使用方法

程序员文章站 2022-05-14 17:31:56
c#中使用正则所需要引用的命名空间是 using system.text.regularexpressions 它包含了8个类,用得最多是的regex,regex不仅可以...

c#中使用正则所需要引用的命名空间是 using system.text.regularexpressions

它包含了8个类,用得最多是的regex,regex不仅可以用来创建正则表达式,而且提供了很多有用的方法。

首先来看一下如何创建一个regex对象:

new regex(string pattern)

new regex(string pattern,regexoptions options)

第一个参数是正则表达式字符串,第二个参数正则配置的选项,有以下几种选项:

ignorecase   //是匹配忽略大小写 默认情况区分大小写
righttoleft   //从右到左查找字符串 默认是从左到右
none    //不设定标志  这是默认选项,就是不设置第2个参数  表示区分大小写 从左到右
multiline   //指定了^和$可以匹配行的开头和结尾,也就是说使用了换行分割,每一行能得到不同的匹配
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 从右到左 匹配连续数字

multiline的例子

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);
}

这时可能有人会问了,如果既想忽略大小写,又想匹配多行,该怎么办呢,就是两种选项同时满足的情况,该如何做呢?

呵呵,当然是有方法的的,只要用竖线将两个选项隔开就可以了,如下举例

regex.matches(input.tostring(), pattern, regexoptions.ignorecase | regexoptions.multiline);