RegexOptions 枚举

定义

提供用于设置正则表达式选项的枚举值。

此枚举支持其成员值的按位组合。

C#
[System.Flags]
public enum RegexOptions
继承
RegexOptions
属性

字段

名称 说明
Compiled 8

指定正则表达式编译为 MSIL 代码,而不是解释。 已编译的正则表达式最大限度地提高运行时性能,代价是会影响初始化时间。 在调用 Options 方法时,不应将此值分配给 CompileToAssembly(RegexCompilationInfo[], AssemblyName) 属性。 有关详细信息,请参阅正则表达式选项文章中的“已编译的正则表达式”部分。

CultureInvariant 512

指定忽略语言中的区域性差异。 有关详细信息,请参阅正则表达式选项文章中的“使用固定区域性的比较”部分。

ECMAScript 256

为表达式启用符合 ECMAScript 的行为。 该值只能与 IgnoreCaseMultilineCompiled 值一起使用。 该值与其他任何值一起使用均将导致异常。

有关 ECMAScript 选项的详细信息,请参阅正则表达式选项文章中的“ECMAScript 匹配行为”部分。

ExplicitCapture 4

指定唯一有效的捕获是显式命名或编号的 (?<name>...) 形式的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法 (?:...) 显得笨拙。有关详细信息,请参阅正则表达式选项文章中的“仅显式捕获”部分。

IgnoreCase 1

指定不区分大小写的匹配。 有关详细信息,请参阅正则表达式选项文章中的“不区分大小写匹配”部分。

IgnorePatternWhitespace 32

消除模式中的非转义空白并启用由 # 标记的注释。 但是,此值不影响或消除标记单独的正则表达式语言元素的开头的字符类、数值量词或标记的空格。 有关详细信息,请参阅正则表达式选项一文中的“忽略空格”部分。

Multiline 2

多行模式。 更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。 有关详细信息,请参阅正则表达式选项文章中的“多行模式”部分。

NonBacktracking 1024

使用避免回溯并保证输入长度的线性时间处理的方法启用匹配。

None 0

指定不设置任何选项。 有关正则表达式引擎的默认行为的详细信息,请参阅正则表达式选项文章中的“默认选项”部分。

RightToLeft 64

指定搜索从右向左而不是从左向右进行。 有关详细信息,请参阅正则表达式选项文章中的“从右到左模式”部分。

Singleline 16

指定单行模式。 更改点 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配。 有关详细信息,请参阅正则表达式选项文章中的“单行模式”部分。

示例

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

C#
using System;
using System.Text.RegularExpressions;

public class Test
{
    public static void Main ()
    {
        // Define a case-insensitive regular expression for repeated words.
        Regex rxInsensitive = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
          RegexOptions.Compiled | RegexOptions.IgnoreCase);
        // Define a case-sensitive regular expression for repeated words.
        Regex rxSensitive = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
          RegexOptions.Compiled);

        // Define a test string.        
        string text = "The the quick brown fox  fox jumps over the lazy dog dog.";
        
        // Find matches using case-insensitive regular expression.
        MatchCollection matches = rxInsensitive.Matches(text);

        // Report the number of matches found.
        Console.WriteLine("{0} matches found in:\n   {1}", 
                          matches.Count, 
                          text);

        // Report on each match.
        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();
        
        // Find matches using case-sensitive regular expression.
        matches = rxSensitive.Matches(text);

        // Report the number of matches found.
        Console.WriteLine("{0} matches found in:\n   {1}", 
                          matches.Count, 
                          text);

        // Report on each match.
        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);
        }
    }
}
// The example produces the following output to the console:
//       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以下成员:

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

枚举的成员 RegexOptions 提供的几个选项尤其 (,其 ExplicitCaptureIgnoreCaseMultilineSingleline 成员) 可以通过在正则表达式模式中使用内联选项字符来提供。 有关详细信息,请参阅 正则表达式选项

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

另请参阅