簡體   English   中英

像Python中的C#正則表達式“詳細”

[英]C# Regex “Verbose” like in Python

在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#中是否有類似的東西?

是的,您可以在.NET正則表達式中添加注釋。

(示例摘自: https : //docs.microsoft.com/zh-cn/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關於在多行上使用逐字字符串@""的答案

您可以使用逐字字符串(使用@ ),該字符串允許您編寫:

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

請注意使用RegexOptions.IgnorePatternWhitespace選項來編寫詳細的正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM