RegexOptions枚举

C#正则匹配RegexOptions选项的组合使用方法 C#中使用正则所需要引用的命名空间是 using System.Text.RegularExpressions 它包含了8个类,用得最多是的Regex,Regex不仅可以用来创建正则表达式,而且提供了很多有用的方法。 首先来看一下如何创建一个Regex对象: new Regex(string pattern) new Regex(string pattern,RegexOptions options) 第一个参数是正则表达式字符串,第二个参数正则配置的选项,有以下几种选项: IgnoreCase   //是匹配忽略大小写 默认情况区分大小写 RightToLeft   //从右到左查找字符串  立即下载

RegexOptions枚举

提供用于设置正则表达式选项的枚举值。
此枚举具有FlagsAttribute属性,该属性允许其成员值按位组合。

[System.Flags]
public enum RegexOptions

继承 Object→ValueType→Enum→RegexOptions
特性 FlagsAttribute

Fields

名称值说明
Compiled8指定将正则表达式编译为程序集。 这会产生更快的执行速度,但会增加启动时间。 在调用 Options 方法时,不应将此值分配给 CompileToAssembly(RegexCompilationInfo[], AssemblyName) 属性。 有关详细信息,请参阅正则表达式选项文章中的“已编译的正则表达式”部分。
CultureInvariant512指定忽略语言中的区域性差异。 有关详细信息,请参阅正则表达式选项文章中的“使用固定区域性的比较”部分。
ECMAScript256为表达式启用符合 ECMAScript 的行为。 该值只能与 IgnoreCase、Multiline 和 Compiled 值一起使用。 该值与其他任何值一起使用均将导致异常。
有关 ECMAScript 选项的详细信息,请参阅正则表达式选项文章中的“ECMAScript 匹配行为”部分。
ExplicitCapture4指定唯一有效的捕获是显式命名或编号的 (?<name>...) 形式的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法 (?:...) 显得笨拙。有关详细信息,请参阅正则表达式选项文章中的“仅显式捕获”部分。
IgnoreCase1指定不区分大小写的匹配。 有关详细信息,请参阅正则表达式选项文章中的“不区分大小写匹配”部分。
IgnorePatternWhitespace32消除模式中的非转义空白并启用由 # 标记的注释。 但是,此值不影响或消除标记单独的正则表达式语言元素的开头的字符类、数值量词或标记的空格。 有关详细信息,请参阅正则表达式选项一文中的“忽略空格”部分。
Multiline2多行模式。 更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。 有关详细信息,请参阅正则表达式选项文章中的“多行模式”部分。
None0指定不设置任何选项。 有关正则表达式引擎的默认行为的详细信息,请参阅正则表达式选项文章中的“默认选项”部分。
RightToLeft64指定搜索从右向左而不是从左向右进行。 有关详细信息,请参阅正则表达式选项文章中的“从右到左模式”部分。
Singleline16指定单行模式。 更改点 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配。 有关详细信息,请参阅正则表达式选项文章中的“单行模式”部分。

示例

下面的示例定义两个正则表达式,它们标识文本中的重复单词,但是使用不同的RegexOptions值实例化。 第一个正则表达式不区分大小写; 当确定一个单词是否与前一个单词相同时,忽略大小写。 第二个正则表达式区分大小写; 一个单词必须与前一个单词的大小写完全匹配才能被视为重复单词。

using System;
using System.Text.RegularExpressions;

public class Test
{
    public static void Main ()
    {
        // 为重复的单词定义不区分大小写的正则表达式
        Regex rxInsensitive = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
          RegexOptions.Compiled | RegexOptions.IgnoreCase);
        // 为重复的单词定义区分大小写的正则表达式
        Regex rxSensitive = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
          RegexOptions.Compiled);

        // 定义一个测试字符串  
        string text = "The the quick brown fox  fox jumps over the lazy dog dog.";
        
        // 使用不区分大小写的正则表达式查找匹配项
        MatchCollection matches = rxInsensitive.Matches(text);

        //报告找到的匹配项数
        Console.WriteLine("{0} matches found in:\n   {1}", 
                          matches.Count, 
                          text);

        // 报告每个匹配
        foreach (Match match in matches)
        {
            GroupCollection groups = match.Groups;
            Console.WriteLine("'{0}' repeated at positions {1} and {2}",  
                              groups["word"].Value, 
                              groups[0].Index, 
                              groups[1].Index);
        }
        Console.WriteLine();
        
        // 使用区分大小写的正则表达式查找匹配项
        matches = rxSensitive.Matches(text);

        //报告找到的匹配项数
        Console.WriteLine("{0} matches found in:\n   {1}", 
                          matches.Count, 
                          text);

        // 报告每个匹配
        foreach (Match match in matches)
        {
            GroupCollection groups = match.Groups;
            Console.WriteLine("'{0}' repeated at positions {1} and {2}",  
                              groups["word"].Value, 
                              groups[0].Index, 
                              groups[1].Index);
        }
    }
}
// 该示例向控制台产生以下输出
//       3 matches found in:
//          The the quick brown fox  fox jumps over the lazy dog dog.
//       'The' repeated at positions 0 and 4
//       'fox' repeated at positions 20 and 25
//       'dog' repeated at positions 50 and 54
//       
//       2 matches found in:
//          The the quick brown fox  fox jumps over the lazy dog dog.
//       'fox' repeated at positions 20 and 25
//       'dog' repeated at positions 50 and 54

备注

可以将 RegexOptions 值作为参数提供给 Regex 类的以下成员:

  • Regex.Regex(String, RegexOptions) 类构造函数。
  • Regex.Split(String, String, RegexOptions) 方法。
  • Regex.IsMatch(String, String, RegexOptions) 方法。
  • Regex.Match(String, String, RegexOptions) 方法。
  • Regex.Matches(String, String, RegexOptions) 方法。
  • Regex.Replace(String, String, String, RegexOptions) 和 Regex.Replace(String, String, MatchEvaluator, RegexOptions) 方法。

还可以将 RegexOptions 值作为参数提供给 RegexCompilationInfo 构造函数,也可以直接将其分配给 RegexCompilationInfo.Options 属性。 然后,将在调用 Regex.CompileToAssembly 方法时使用生成的 RegexCompilationInfo 对象。

通过使用正则表达式模式中的内联选项字符,可以提供由 RegexOptions 枚举的成员(特别是通过其 ExplicitCapture、IgnoreCase、Multiline和 Singleline 成员)提供的多个选项。 有关详细信息,请参阅正则表达式选项。


RegexOptions枚举

在创建Regex类的实例时,构造函数的重载中有一个要求传入RegexOptions的一个枚举值,我相信这个枚举一定非常有用,否则不会要求在构造函数中传入。今天就来看一看这个枚举的作用。

我们干脆把代码敲出来看一看:

    // 摘要:
    //     提供用于设置正则表达式选项的枚举值。
    [Flags]
    public enum RegexOptions
    {
        // 摘要:
        //     指定不设置选项。
        None = 0,
        //
        // 摘要:
        //     指定不区分大小写的匹配。
        IgnoreCase = 1,
        //
        // 摘要:
        //     多行模式。更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。
        Multiline = 2,
        //
        // 摘要:
        //     指定有效的捕获仅为形式为 (?<name>...) 的显式命名或编号的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法 (?:...)
        //     显得笨拙。
        ExplicitCapture = 4,
        //
        // 摘要:
        //     指定将正则表达式编译为程序集。这会产生更快的执行速度,但会增加启动时间。在调用 System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName)
        //     方法时,不应将此值分配给 System.Text.RegularExpressions.RegexCompilationInfo.Options
        //     属性。
        Compiled = 8,
        //
        // 摘要:
        //     指定单行模式。更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 \n 之外的每个字符匹配)。
        Singleline = 16,
        //
        // 摘要:
        //     消除模式中的非转义空白并启用由 # 标记的注释。但是,System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace
        //     值不会影响或消除字符类中的空白。
        IgnorePatternWhitespace = 32,
        //
        // 摘要:
        //     指定搜索从右向左而不是从左向右进行。
        RightToLeft = 64,
        //
        // 摘要:
        //     为表达式启用符合 ECMAScript 的行为。该值只能与 System.Text.RegularExpressions.RegexOptions.IgnoreCase、System.Text.RegularExpressions.RegexOptions.Multiline
        //     和 System.Text.RegularExpressions.RegexOptions.Compiled 值一起使用。该值与其他任何值一起使用均将导致异常。
        ECMAScript = 256,
        //
        // 摘要:
        //     指定忽略语言中的区域性差异。有关更多信息,请参见 Performing Culture-Insensitive Operations in the
        //     RegularExpressions Namespace。
        CultureInvariant = 512,
    }

由代码可以看出这是一个标志枚举。

其实把代码复制出来之后,感觉也不是那么难懂,都是一些基本的指示。

None = 0,         //指定不设置选项。
IgnoreCase = 1,     //指定不区分大小写的匹配。
Multiline = 2,          //多行模式。更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。
ExplicitCapture = 4,    //指定有效的捕获仅为形式为 (?<name>...) 的显式命名或编号的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法 (?:...)显得笨拙。
Compiled = 8,       //指定将正则表达式编译为程序集。这会产生更快的执行速度,但会增加启动时间。在调用 System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName)方法时,不应将此值分配给属性。
Singleline = 16,    //指定单行模式。更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 \n 之外的每个字符匹配)。
IgnorePatternWhitespace = 32 //消除模式中的非转义空白并启用由 # 标记的注释。但是,System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace值不会影            响或消除字符类中的空白。
RightToLeft = 64  //指定搜索从右向左而不是从左向右进行。

ECMAScript = 256,   //为表达式启用符合 ECMAScript 的行为。该值只能与 System.Text.RegularExpressions.RegexOptions.IgnoreCase、System.Text.RegularExpressions.RegexOptions.Multiline 和 System.Text.RegularExpressions.RegexOptions.Compiled 值一起使用。该值与其他任何值一起使用均将导致异常。

CultureInvariant = 512    //指定忽略语言中的区域性差异。
RegexOptions.IgnoreCase正则表达式替换,忽略大小写 RegexOptions.IgnoreCase正则表达式替换,忽略大小写,需要的朋友可以参考一下 立即下载

相关推荐

MICS-6814多气体传感器与ESP32-C3 Mini接口构建空气监测系统

cararenuity C3 Mini的多个ADC引脚,Wi-Fi和蓝牙LE以及紧凑的设计使其成为嵌入式物联网应用的绝佳选择。在这个项目中,我们将把MICS-6814多气体传感器与基于esp32 -C3的开发板cararenuity C3 Mini连接起来。更多模拟引脚:与ESP8266只有一个ADC引脚不同,基于esp32 -C3的cararenuity C3 Mini提供多个ADC引脚,使其成为多传感器应用的理想选择。紧凑可靠:该板的小尺寸使其成为嵌入式应用的理想选择,而不会牺牲性能。

hie98894的博客 768

c#正则表达式——RegexOptions

1、RegexOptions.None 不设置任何选项 string pattern = "abc_"; Regex regex = new Regex(pattern, RegexOptions.None); string inputString = "agcABc_,abc_,Abc_,abC_\naBc_,ABc_"; Console.WriteLine(regex.Match(inputString).Value); 输出: abc_ 2、 Reg

qq_34059233的博客 2481

Vivado2022.2下载安装

链接:https://pan.baidu.com/s/1lyfE2d-VmaWC-_aR8ratCQ提取码:mt09。

weixin_61081689的博客 2万+

正则表达式的关键——Pattern匹配规则全解

系列文章目录 专栏目录​​​​​​https://blog.youkuaiyun.com/weixin_44182128/article/details/122654522) 上一节:正则表达式基本介绍https://blog.youkuaiyun.com/weixin_44182128/article/details/122675018 一、正则表达式Regex的属性 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人

weixin_44182128的博客 7118

Drools vs URule:5个真实项目场景告诉你如何选择开源规则引擎

本文通过电商风控、物流计费、会员体系、保险定价和物联网告警五个真实项目场景,深度对比了Drools与URule两款开源规则引擎。分析了两者在规则复杂度、性能表现、开发运维及适用场景上的核心差异,为技术选型提供基于实战的决策指南。

k6l7m8n9的博客 943

IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)

实现三分频电路最简单的是: 利用计数器实现。 时序图分析(本人比较懒,平常科研忙,所以直接手画时序图了,懒得用软件画了): 直接上图分析:利用计数器每隔三个周期信号翻转一次,同时在不同的计数下翻转得到的同步信号 clk_1和clk_2,再利用异或即可实现出一个不同占空比的三分频信号(同样的方法也可扩展到其他奇数分频设计中)。 例如占空比50%: module Div_three( input clk, input rst_n, output div_three ); reg

qq_41884662的博客 1万+

C#正则表达式用法总结

判断用户输入的密码是否合法,判断用户输入的邮箱格式是否合法.

qq_42980743的博客 2万+

电压电流双闭环PFC单相PWM整流

电压电流双闭环PFC单相整流。仿真及代码

xht2403267701的博客 6051

C#正则表达式实例

狼牙者.net 博客园 首页 新随笔 联系 订阅 管理 随笔 - 74文章 - 75评论 - 5 C# 正则表达式大全 文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串。正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法。...

weixin_30421809的博客 3600

【MFiX后处理】MFiX中使用des_usr_var输出颗粒的传热量(2020-11-27更新变更输出变量名方法)

参考之前Yin的那一篇博客 https://www.cnblogs.com/Jay-CFD/p/10621274.html 输出一下颗粒传热量 使用的算例是fluid_bed_dem_2d 打开des scalar tracking 前面都和Yin那篇一样,打开enable user scalar tracking 输入2 因为第一个用来测试Y加速度了 第二个输出传热量 然后在output vtk中勾选好 更改源代码 源代码为des_thermo_newvalues.f 在mfix-GUI自带的ed

beidou111的博客 1532

【JCR一区级】鱼鹰算法OOA-CNN-LSTM-Attention故障诊断分类预测【含Matlab源码 5711期】

鱼鹰算法OOA-CNN-LSTM-Attention故障诊断分类预测 完整代码和数据,方可运行;数据可直接替换,适合小白!可提供运行操作视频!

订阅付费专栏Matlab(奶茶价版)或下载付费资源,可赠送奶茶价版付费专栏指定代码1份; 3600

RegexOptions 枚举

RegexOptions 枚举 提供用于设置正则表达式选项的枚举值。 此枚举具有允许按位组合其成员值的 FlagsAttribute 属性。 [Visual Basic]

realduke2000的专栏 804

代码复现5——VLMaps

报错“AttributeError: module 'clip' has no attribute 'load'”,运行下述命令解决。运行后接着报错:“ModuleNotFoundError: No module named 'pytorch_lightning'”运行后命令后会弹出一个RGB窗口,可以用键盘上的“W”“A”“D”键控制移动视角的变化,“空格”键开始记录,“q”键停止。并更改相关代码文件,vlmaps/vlmaps/lseg/modules/models/lseg_vit.py。

qq_44100524的博客 603

.NET中的正则表达式 (二)RegexOptions 枚举

RegexOptions 枚举 提供用于设置正则表达式选项的枚举值。此枚举有一个 FlagsAttribute 属性,允许其成员值按位组合 说明 Compiled:指定将正则表达式编译为程序集。这会产生更快的执行速度,但会增加启动时间。 CultureInvariant:指定忽略语言中的区域性差异。有关更多信息,请参见 在 RegularExpressions 命名空间中执行不区分区域性的操作。 ECMAScript:为表达式启用符合 ECMAScript 的行为。该值只能与 IgnoreCase

654

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【.net】关于RegexOptions中的各个枚举值的含义

Member nameDescription Compiled Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. This value should not be assi...

weixin_30267691的博客 186

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

9.1.3 正则表达式选项

开发人员在使用Regex类或创建该类的实例时,都可以使用正则表达式选项。该选项是一个类型为RegexOptions的枚举值。RegexOptions枚举提供用于设置正则表达式选项的枚举值,具体说明如表9-5所示。    

精通正则表达式 539

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C#正则表达式之Ismatch()

IsMatch()方法可以测试字符串,看它是否匹配正则表达式的模式。如果发现一次匹配

我为编程狂 2万+

字符串和正则表达式(正则表达式)

正则表达式的两个功能:①一组用于标识字符类型的转义代码。DOS表达式中字符表示任意子字符串(DOS命令DirRe会列出名称以Re开头的所有文件)。正则表达式使用与*类似许多序列来表示"任意一个字符"、“一个单词的中断”和“一个可选的字符"等。②一个系统,在搜索操作中,它把字符串和中间结果的各个部分组合起来。③识别(可以是标记或删除)字符串中所有重复的单词,例如:把"The computer books books"转换为"The computer books"。

钢铁男儿 454

C#正则表达式主要用法

MachCollection //正则表达式 匹配()里的内容、 string str = "计算机(CPU)你好(Hello)(Hi) English(英语)"; string reg = @"(?<=[((])[^()()]*(?=[))])"; MatchCollection mac = Regex.Matches(str,reg); foreach (Match item in

vvgvv009的博客 324

C#正则表达式Regex类的介绍

一、在C#中,要使用正则表达式类,请在源文件开头处添加以下语句:  using System.Text.RegularExpressions;  二、RegEx类常用的方法  1、静态Match方法  使用静态Match方法,可以得到源中第一个匹配模式的连续子串。  静态的Match方法有2个重载,分别是  Regex.Match(string input, string patter...

weixin_33836874的博客 92
上一篇: Match.NextMatch方法
下一篇: ASP.NET Core 中的响应缓存中间件
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值