C#Regex“Verbose”就像在Python中一样

时间:2018-06-04 15:19:11

标签: c# python regex

在Python中,我们有re.VERBOSE参数,允许我们很好地格式化regex表达式并包含注释,例如

import re

ric_index = re.compile(r'''(
    ^(?P<delim>\.)    # delimiter "."
    (?P<root>\w+)$    # Root Symbol, at least 1 character
    )''',re.VERBOSE)

C#中有类似内容吗?

2 个答案:

答案 0 :(得分:3)

是的,您可以在.NET regex中发表评论。

(示例复制自: https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference#miscellaneous_constructs

您可以使用(?# .... )

进行内联评论
string regex = @"\bA(?#Matches words starting with A)\w+\b"

或评论到行#

的结尾
string regex = @"(?x)\bA\w+\b#Matches words starting with A"

你总是可以在几行上跨越你的正则表达式字符串,并使用经典的C#注释:

string regex = 
    @"\d{1,3}" +        // 1 to 3 digits
    @"\w+" +            // any word characters
    @"\d{10}";          // 10 digits

另见Thomas Ayoub关于在几行中使用逐字字符串@""的答案

答案 1 :(得分:3)

您可以使用逐字字符串(使用@),它允许您编写:

var regex = new Regex(@"^(?<delim>\\.)     # delimiter "".""
                    (?<root>\\w+)$    # Root Symbol, at least 1 character
                    ", RegexOptions.IgnorePatternWhitespace);

请注意使用RegexOptions.IgnorePatternWhitespace选项来编写详细的正则表达式。